Подтвердить что ты не робот

Запрос элементов массива с помощью Mongo

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

_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

    )
4b9b3361

Ответ 1

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

{ ingredients: "apple" }

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

Ответ 2

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

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

Поэтому следующий запрос:

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

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

{ field: [-1,3] }

Ответ 3

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

db.find({ "components": {$ in: "apple" }});