Как сделать в Mongo дважды IN?

Для выполнения двойного условия 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. Если вы имеете дополнительные вопросы, не стесняйтесь задавать!