英文原文地址:https://docs.mongodb.com/v3.2/tutorial/query-for-null-fields/。
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。
查询null或缺失的字段
MongoDB中不同的查询操作对待null值的行为也不一样。
该文章的例子在mongo
shell中使用db.collection.find()
方法。为填充本例子中用到的users集合,请在mongo
shell中运行以下命令:
db.users.insert(
[
{ "_id" : 900, "name" : null },
{ "_id" : 901 }
]
)
相等过滤
{ name: null } 查询匹配包含name字段但值为null或者不包含name字段的文档。
以下查询:
db.users.find( { name: null } )
返回2个文档:
{ "_id" : 900, "name" : null }
{ "_id" : 901 }
如果查询使用了稀疏索引,那么只会匹配null值,不会匹配缺失该字段的文档。
类型检查
{ name : {$type: 10} } 查询仅匹配含有name字段且值为null的文档,即:name字段的值是BSON类型的Null。
db.users.find( { name : { $type: 10 } } )
该查询只返回name字段值为null的文档:
{ "_id" : 900, "name" : null }
存在性检测
{ name : { $exists: false}} 查询匹配不包含name字段的文档:
db.users.find( { name : { $exists: false } } )
该查询只返回不包含name字段的文档:
{ "_id" : 901 }
参见:
$type和$exists操作符的参考文档。