MongoDB: как использовать запрос «НЕ В»


Вы можете использовать следующий синтаксис для запроса всех документов, в которых значение определенного поля не входит в определенный список значений:

db.collection.find({field1: { $nin : [" value1", " value2", " value3 "]}})

Этот конкретный запрос находит все документы, в которых значение в поле1 не равно значению1, значению2 или значению3.

В следующих примерах показано, как использовать этот синтаксис на практике.

Пример 1: запрос «НЕ ВХОДИТ» с одним значением

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

db.teams.insertOne({team: " Mavs", position: " Guard", points: 31 })
db.teams.insertOne({team: " Spurs", position: " Guard", points: 22 })
db.teams.insertOne({team: " Rockets", position: " Center", points: 19 })
db.teams.insertOne({team: " Warriors", position: " Forward", points: 26 })
db.teams.insertOne({team: " Cavs", position: " Guard", points: 33 })

Мы можем использовать следующий код, чтобы найти все документы, где поле «команда» не равно значению «Ракеты»:

db.teams.find({team: { $nin : [" Rockets "]}})

Этот запрос возвращает следующие документы:

{ _id: ObjectId("619527e467d6742f66749b72"),
 team: 'Cavs',
 position: 'Guard',
 points: 33 }

{ _id: ObjectId("619527e467d6742f66749b6e"),
 team: 'Mavs',
 position: 'Guard',
 points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
 team: 'Mavs',
 position: 'Guard',
 points: 22 }

Обратите внимание, что возвращаются только те документы, в которых поле «команда» не равно «Ракеты».

Пример 2. Запрос «НЕ ВХОДИТ» со списком значений

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

db.teams.insertOne({team: " Mavs", position: " Guard", points: 31 })
db.teams.insertOne({team: " Spurs", position: " Guard", points: 22 })
db.teams.insertOne({team: " Rockets", position: " Center", points: 19 })
db.teams.insertOne({team: " Warriors", position: " Forward", points: 26 })
db.teams.insertOne({team: " Cavs", position: " Guard", points: 33 })

Мы можем использовать следующий код, чтобы найти все документы, в которых поле «команда» не равно значению «Рокетс» или «Кавс»:

db.teams.find({team: { $nin : [" Rockets", " Cavs "]}})

Этот запрос возвращает следующие документы:

{ _id: ObjectId("619527e467d6742f66749b6e"),
 team: 'Mavs',
 position: 'Guard',
 points: 31 }

{ _id: ObjectId("619527e467d6742f66749b6f"),
 team: 'Mavs',
 position: 'Guard',
 points: 22 }

Обратите внимание, что возвращаются только те документы, в которых поле «команда» не равно «Рокетс» или «Кавс».

Примечание.Полную документацию по функции $nin можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:

MongoDB: как делать запросы с регулярным выражением «Нравится»
MongoDB: как проверить, содержит ли поле строку
MongoDB: как добавить новое поле в коллекцию
MongoDB: как удалить поле из каждого документа

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.