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» у колекції teams :

 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» у колекції teams :

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

Припустімо, замість цього ми перевіримо, чи існує вбудоване ім’я поля «division» у полі «class» у колекції teams :

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

Оскільки це вбудоване поле не існує, результати не повертаються.

Примітка . Ви можете знайти повну документацію для функції $exists тут .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в MongoDB:

MongoDB: як перерахувати всі назви полів
MongoDB: Як перейменувати поля
MongoDB: Як додати нові поля
MongoDB: як видалити поля

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *