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. Запрос «NON IN» со списком значений

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *