Подскажите, как решить следующую задачу: Получаю на входе массив ингредиентов следующего

вида: ['onion', 'bread', 'potato']

И есть рецепты примерно такого вида:

{
title: "Title",
ingredients: [
{
name: "bread"
quantity: 2
},
{
name: "potato",
quantity: 4
}
]
}

Как правильно сформировать запрос, чтобы получать выборку рецептов, которые содержат все ингредиенты из массива ингредиентов, но при этом не обращать внимание на их необходимое количество?
Вероятно, нужно как-то использовать оператор $all, но не совсем понимаю, как массив строк сравнивать с массивом объектов?

4 ответов

7 просмотров

ты уверен что используешь правильную БД для своей задачи?

делаете условие $and:[ $elemMatch:{ ingredients.name: v1}, $elemMatch:{ ingredients.name: v2}, ..... ]

тут есть еще пример через $all и $elemMatch https://docs.mongodb.com/manual/reference/operator/query/all/

сравнивать через dot notation: {"ingredients.name": {$all: ["bread", "tomatoe»]}

Похожие вопросы

Обсуждают сегодня

Ребята, всем привет, у меня такой вопрос, заказчику нужно чтобы бот собирал данные о количестве просмотров на определенных постах, уже все перерыл, как то можно реализовать та...
AdmM
3
Anyone wants to team up for kaggle competition?
Asmi S
3
Всем привет. Подскажите, почему не меняется значение поля при переключении сайта?
Alexander Peterikov
11
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Каким то образом можно определить ширину экрана пользователя перед загрузкой partial-а? Надо рассчитать ширину кадров слайдера для ресайза картинок для container-fluid.
Point 111
22
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Приветствую друзья, подскажите сколько в среднем стоит на данный момент создать тг бота который будет как магазин? Показывать ассортименты доставлять заказы и тд? Все по станд...
Eugene
3
Карта сайта