Запрос элементов массива с Mongo - PullRequest
27 голосов
/ 22 июля 2010

Как я могу запросить смузи с яблоком? (ниже сборник с 3 документами)

_id => 1
name => 'best smoothie' 
ingredients => Array
    (
        [0] => apple
        [1] => raspberry
        [2] => orange
        [3] => banana
    )
_id => 2
name => 'summer smoothie' 
ingredients => Array
    (
        [0] => lemon
        [1] => mint

    )
_id => 3
name => 'yogurt smoothie' 
ingredients => Array
    (
        [0] => apple
        [1] => blueberry

    )

Ответы [ 3 ]

47 голосов
/ 22 июля 2010

Если вы просто выполните приведенный ниже запрос, MongoDB будет достаточно умен, чтобы выяснить, что вы пытаетесь сделать.

{ ingredients: "apple" }

Mongo увидит, что ингредиенты - это список, и возвращаются только те документы, которые содержат «яблоко»."где-то в этом списке.

0 голосов
/ 24 января 2013

Из документации :

Примечание. Поля, содержащие массивы, соответствуют условным операторам, , если только один элемент соответствует .

Следовательно, следующий запрос:

db.collection.find( { field: { $gt:0, $lt:2 } } );

Будет соответствовать документу, который содержит следующее поле:

{ field: [-1,3] }

0 голосов
/ 06 мая 2011

Почему люди пишут масштабируемые приложения для смузи?

db.find ({"ингридиенты": {$ in: "apple"}});

...