Mongodb:如何查询“not null”?在特定区域


您可以使用以下语法查找 MongoDB 中特定字段不为空的所有文档:

 db.collection.find({" field_name ":{ $ne : null }}) 

以下示例展示了如何在实践中使用此语法。

示例1:查询特定字段中的“not null”

假设我们有一个收集团队,拥有以下文档:

 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 })

我们可以使用下面的代码来查找“position”字段不为空的所有文档:

 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 }

请注意,返回的唯一文档是“position”字段不为空的文档。

示例2:查询“not null”(当所有文档都不包含该字段时)

假设我们有一个收集团队,拥有以下文档:

 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 })

请注意,集合中的第二个文档甚至没有“位置”字段。

我们可以使用以下代码来查找“position”字段不为零的所有文档:

 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:如何使用“Like”正则表达式进行查询
MongoDB:如何检查字段是否包含字符串
MongoDB:如何向集合添加新字段
MongoDB:如何从每个文档中删除字段

添加评论

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