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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.