2012-01-24 4 views
0

Пусть я следующие коллекции:Как получить значение любого элемента из mongoDB?

{ _id" : ObjectId("4f1d8132595bb0e4830d15cc"), 
    "Data" : "[ 
      { "id1": "100002997235643", "from": {"name": "Joannah" ,"id": "100002997235643"} , "label" : "test" } , 
      { "id1": "100002997235644", "from": {"name": "Jon" ,"id": "100002997235644"} , "label" : "test1" } 
     ]" , 
    "stat" : "true" 
} 

Как я могу получить ID1, имя, идентификатор, метку или любой другой элемент?

Я могу получить поле _id, DATA (полный массив), но не внутренние элементы в DATA.

ответ

0

Вы не можете запросить встроенные структуры. Вы всегда запрашиваете документы верхнего уровня. Если вы хотите запросить отдельные элементы из вашего массива, вам нужно будет сделать эти документы верхнего уровня элемента (поэтому, поместите их в свою собственную коллекцию) и сохраните массив _ids в этом документе.

При этом, если массив не становится очень большим, почти всегда более эффективно просто захватывать весь документ и находить соответствующий элемент в вашем приложении.

0

Я не думаю, что вы можете это сделать. Объясняется here.

Если вы хотите получить доступ к определенным полям, то следующие MongoDB Documentation, можно добавить параметр флага запроса, но вы должны перестроить свои документы, чтобы это было полезно:

Выбор поля

В дополнение к выражению запроса, запросы MongoDB могут принимать дополнительные аргументы. Например, можно запросить возврат только определенных полей. Если бы мы просто хотели номера социального обеспечения пользователей с фамилией «Смит», то из оболочки мы могли бы выпустить этот запрос:

// retrieve ssn field for documents where last_name == 'Smith': 
db.users.find({last_name: 'Smith'}, {'ssn': 1}); 

// retrieve all fields *except* the thumbnail field, for all documents: 
db.users.find({}, {thumbnail:0}); 
Смежные вопросы