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. Проверьте, существует ли поле

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

 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 }

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

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

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

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

Пример 2. Проверьте, существует ли внедренное поле

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

 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».

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

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

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

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

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

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *