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