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: как удалить поле из каждого документа