Mongodb: как использовать «не равно» в запросах
Вы можете использовать оператор $ne (означающий «не равно») в MongoDB, чтобы найти документы, в которых поле не равно определенному значению.
Этот оператор использует следующий базовый синтаксис:
db.myCollection.find({' team ': { $ne : " Mavs "}})
В этом конкретном примере выполняется поиск всех документов в коллекции с именем myCollection , где поле команды не равно «Mavs».
Вы также можете использовать оператор $nin (что означает «нет») для поиска документов, в которых поле не соответствует ни одному значению в списке.
Этот оператор использует следующий базовый синтаксис:
db.myCollection.find({' team ': { $nin : [" Mavs ", " Cavs ", " Spurs "]}})
В этом конкретном примере выполняется поиск всех документов в коллекции с именем myCollection , где поле команды не равно «Mavs», «Cavs» или «Spurs».
Следующие примеры показывают, как использовать каждый метод на практике с командой по сбору платежей со следующими документами:
db.teams.insertOne({team: " Mavs ", points: 30, rebounds: 8}) db.teams.insertOne({team: " Spurs ", points: 35, rebounds: 12}) db.teams.insertOne({team: " Rockets ", points: 20, rebounds: 7}) db.teams.insertOne({team: " Warriors ", points: 25, rebounds: 5}) db.teams.insertOne({team: " Cavs ", points: 23, rebounds: 9})
Пример 1: «Другой» запрос
Следующий код показывает, как найти все документы в коллекции Teams , где поле «team» не равно «Mavs»:
db.teams.find({' team ': { $ne : " Mavs "}})
Этот запрос возвращает следующие документы:
{ _id: ObjectId("6203ec0e1e95a9885e1e7658"), team: 'Cavs', points: 23, rebounds: 9 } { _id: ObjectId("6203ec0e1e95a9885e1e7656"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("6203ec0e1e95a9885e1e7655"), team: 'Spurs', points: 35, rebounds: 12 } { _id: ObjectId("6203ec0e1e95a9885e1e7657"), team: 'Warriors', points: 25, rebounds: 5 }
Обратите внимание, что каждый документ в коллекции Teams возвращается, если поле команды не равно «Mavs».
Примечание . Оператор $ne чувствителен к регистру.
Пример 2: Запрос «Не в»
Следующий код показывает, как найти все документы в коллекции команд , где поле команды не равно «Мавс», «Кавс» или «Шпоры»:
db.teams.find({' team ': { $nin : [" Mavs ", " Cavs ", " Spurs "]}})
Этот запрос возвращает следующие документы:
{ _id: ObjectId("6203ec0e1e95a9885e1e7656"), team: 'Rockets', points: 20, rebounds: 7 } { _id: ObjectId("6203ec0e1e95a9885e1e7657"), team: 'Warriors', points: 25, rebounds: 5 }
Обратите внимание, что каждый документ в коллекции Teams возвращается, если поле команды не равно «Mavs», «Cavs» или «Spurs».
Примечание №1 . Полную документацию по функции $ne можно найти здесь .
Примечание № 2. Полную документацию по функции $nin можно найти здесь .
Дополнительные ресурсы
В следующих руководствах объясняется, как выполнять другие распространенные операции в MongoDB:
MongoDB: как проверить, содержит ли поле строку
MongoDB: как искать «не ноль» в определенном поле
MongoDB: как заменить строки