MongoDB: как запросить «не нуль» в определенном поле


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

db.collection.find({" field_name ":{ $ne : null }})

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

Пример 1: запрос «не нуль» в определенном поле

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

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

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

db.teams.find({" position ":{ $ne : null }})

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

{ _id: ObjectId("618bf18f35d8a762d3c28717"),
 team: 'Spurs',
 position: 'Guard',
 points: 22 }

{ _id: ObjectId("618bf18f35d8a762d3c28719"),
 team: 'Warriors',
 position: 'Forward',
 points: 26 }

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

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

Пример 2. Запрос «не нуль» (когда не каждый документ содержит поле)

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

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

Обратите внимание, что второй документ в коллекции даже не имеет поля «должность».

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

db.teams.find({" position ":{ $ne : null }})

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

{ _id: ObjectId("618bf18f35d8a762d3c28719"),
 team: 'Warriors',
 position: 'Forward',
 points: 26 }

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

Поскольку во втором документе нет даже поля «должность», он не возвращается.

Также обратите внимание, что два других документа, которые имеют нулевое значение в поле «позиция», также не возвращаются.

Резюме : используя синтаксис $ne:null , мы возвращаем только те документы, в которых существует определенное поле , не равное NULL.

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

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

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