Для выполнения двойного условия IN в MongoDB вам понадобится использовать операторы $in
и $all
.
Оператор $in
позволяет выбрать документы, у которых значение поля совпадает с одним из элементов заданного массива. Оператор $all
позволяет выбрать документы, у которых значение поля содержит все элементы заданного массива.
Допустим, у вас есть коллекция "users", в которой есть поле "favorite_fruits". Вы хотите найти пользователей, у которых в поле "favorite_fruits" есть и "яблоки" и "бананы".
Вот как это может быть сделано:
db.users.find({ favorite_fruits: { $all: ["яблоки", "бананы"] } })
В этом примере мы использовали оператор $all
вместе с массивом, содержащим значения "яблоки" и "бананы". MongoDB вернет все документы, у которых поле "favorite_fruits" содержит оба этих значения.
Теперь предположим, что у вас есть вторая коллекция "fruits", в которой хранятся фрукты, и вы хотите найти пользователей, у которых поле "favorite_fruits" содержит только фрукты с определенными идентификаторами.
Вот как это можно сделать:
var fruitIds = [1, 2, 3]; db.users.find({ favorite_fruits: { $all: db.fruits.find({ _id: { $in: fruitIds } }).toArray() } })
В этом примере мы используем оператор $in
внутри оператора $all
, чтобы проверить, содержит ли поле "favorite_fruits" только фрукты с идентификаторами, указанными в массиве "fruitIds". Мы сначала выполняем запрос к коллекции "fruits", используя оператор $in
для поиска фруктов с нужными идентификаторами, а затем передаем результат запроса как аргумент оператору $all
.
В итоге, MongoDB вернет все документы из коллекции "users", у которых поле "favorite_fruits" содержит только фрукты с указанными идентификаторами.
Надеюсь, что эта информация помогла вам понять, как использовать двойное условие IN в MongoDB. Если вы имеете дополнительные вопросы, не стесняйтесь задавать!