MongoDB: как проверить, существует ли поле


Вы можете использовать следующие методы, чтобы проверить, существует ли поле в коллекции в MongoDB:

Способ 1: проверить, существует ли поле

db.myCollection.find({ " myField ": { $exists : true } })

Этот метод проверяет, существует ли «myField» в коллекции под названием myCollection.Если это так, он возвращает все документы, содержащие имя поля. Если это не так, он ничего не возвращает.

Способ 2: проверьте, существует ли встроенное поле

db.myCollection.find({ " myField.embeddedField ": { $exists : true } })

Этот метод проверяет, существует ли имя поля «embeddedField» в поле «myField» в коллекции под названием myCollection.Если это так, он возвращает все документы, содержащие имя поля. Если это не так, он ничего не возвращает.

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

db.teams.insertOne({team: "Mavs", class: {conf:"Western", div:"A"}, points: 31 })
db.teams.insertOne({team: "Spurs", class: {conf:"Western", div:"A"}, points: 22 })
db.teams.insertOne({team: "Jazz", class: {conf:"Western", div:"B"}, points: 19 })
db.teams.insertOne({team: "Celtics", class: {conf:"Eastern", div:"C"}, points: 26 })

Пример 1: проверить, существует ли поле

В следующем коде показано, как проверить, существует ли имя поля «точки» в коллекции команд :

db.teams.find({ " points ": { $exists : true } })

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

{ _id: ObjectId("6203d10c1e95a9885e1e7637"),
 team: 'Mavs',
 class: { conf: 'Western', div: 'A' },
 points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
 team: 'Spurs',
 class: { conf: 'Western', div: 'A' },
 points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
 team: 'Jazz',
 class: { conf: 'Western', div: 'B' },
 points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
 team: 'Celtics',
 class: { conf: 'Eastern', div: 'C' },
 points: 26 } 

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

Предположим, вместо этого мы проверяем, существует ли поле с именем «steals» в наборе команд :

db.teams.find({ " steals ": { $exists : true } })

Поскольку это поле не существует, выходные данные не возвращаются.

Пример 2. Проверка наличия встроенного поля

В следующем коде показано, как проверить, существует ли встроенное имя поля «div» в поле «класс» в коллекции Teams :

db.teams.find({ " class.div ": { $exists : true } })

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

{ _id: ObjectId("6203d10c1e95a9885e1e7637"),
 team: 'Mavs',
 class: { conf: 'Western', div: 'A' },
 points: 31 }
{ _id: ObjectId("6203d10c1e95a9885e1e7638"),
 team: 'Spurs',
 class: { conf: 'Western', div: 'A' },
 points: 22 }
{ _id: ObjectId("6203d10c1e95a9885e1e7639"),
 team: 'Jazz',
 class: { conf: 'Western', div: 'B' },
 points: 19 }
{ _id: ObjectId("6203d10c1e95a9885e1e763a"),
 team: 'Celtics',
 class: { conf: 'Eastern', div: 'C' },
 points: 26 } 

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

Предположим, вместо этого мы проверяем, существует ли встроенное имя поля «подразделение» в поле «класс» в коллекции команд :

db.teams.find({ " class.division ": { $exists : true } })

Поскольку это встроенное поле не существует, выходные данные не возвращаются.

Примечание.Полную документацию по функции $exists можно найти здесь .

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

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

MongoDB: как вывести список всех имен полей
MongoDB: как переименовать поля
MongoDB: как добавить новые поля
MongoDB: как удалить поля

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