2015-03-18 3 views
1

У меня есть некоторые данные структурированы, как это в коллекции Монго:Как запросить вложенные массивы в MongoDB из командной строки

{ "list" : [ { "update_time" : NumberLong(1426690563), "provider" : NumberLong(4) } ] } 

То, что я хотел бы сделать, это запрос для всех записей, где list включает в себя provider значение 4.

Если это помогает, все массивы list содержат только один элемент.

То, что я пытаюсь сейчас это:

db.collection.find(
    { 
     list: { 
       provider: 4 
      } 
    } 
) 

Это не работает, хотя, и всегда возвращает пустой набор

+0

Это решение – johncorser

ответ

1

Используйте dot notation т.е. сцепить имя поля, которое содержит массив с точкой (.) и именем поля во встроенном документе и использовать его в качестве запроса:

db.collection.find({"list.provider": 4}) 

Вы также можете использовать $elemMatch оператору задать несколько критериев в массиве вложенных документов, таким образом, что по меньшей мере один внедренные удовлетворяет документировать все указанные критерии:

db.collection.find({ 
    list: { 
     $elemMatch: { 
      provider: 4 
     } 
    } 
}) 
Смежные вопросы