Запрос элементов массива с помощью 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
)
Ответы
Ответ 1
Если вы просто запустите указанный ниже запрос, MongoDB достаточно умен, чтобы понять, что вы пытаетесь сделать.
{ ingredients: "apple" }
Mongo увидит, что ингредиенты являются списком и только возвращают документы, содержащие "яблоко", где-то в этом списке.
Ответ 2
Из документации:
Примечание. Поля, содержащие массивы, соответствуют условным операторам, , если только один item соответствует.
Поэтому следующий запрос:
db.collection.find( { field: { $gt:0, $lt:2 } } );
Будет соответствовать документ, содержащий следующее поле:
{ field: [-1,3] }
Ответ 3
Почему люди пишут масштабируемые приложения для коктейлей?
db.find({ "components": {$ in: "apple" }});