Mongodb:如何检查字段是否存在


您可以使用以下方法来检查 MongoDB 中的集合中是否存在某个字段:

方法一:检查字段是否存在

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

此方法检查名为myCollection 的集合中是否存在“myField”。如果是,则返回包含该字段名称的所有文档。如果没有,则不会返回任何内容。

方法二:检查内嵌字段是否存在

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

此方法检查名为myCollection 的集合中是否存在字段“myField”中的字段名称“embeddedField”。如果是,则返回包含该字段名称的所有文档。如果没有,则不会返回任何内容。

以下示例展示了如何在收集团队的实践中使用每种方法,并提供以下文档:

 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:检查字段是否存在

以下代码显示如何检查team集合中是否存在字段名称“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”的每个文档。

假设我们检查team集合中是否存在字段名称“steals”:

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

由于该字段不存在,因此不会返回任何输出。

示例2:检查嵌入字段是否存在

以下代码显示如何检查内置字段名称“div”是否存在于team集合的“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”的每个文档。

假设我们检查team集合的“class”字段中是否存在内置字段名称“division”:

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

由于此内置字段不存在,因此不会返回任何输出。

注意:您可以在此处找到$exists函数的完整文档。

其他资源

以下教程解释了如何在 MongoDB 中执行其他常见操作:

MongoDB:如何列出所有字段名称
MongoDB:如何重命名字段
MongoDB:如何添加新字段
MongoDB:如何删除字段

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注