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:如何从每个文档中删除字段