MongoDB中的数据类型如下图:
插入数据:
db.user.insert([{name:"张三", sex: "man"}, {name:"李四", sex:null}, {name:"王五"}])
查询sex为null的用户:
db.user.find({sex:null})
{ "_id" : ObjectId("5dcc1a794552bedf4414fe77"), "name" : "李四", "sex" : null }
{ "_id" : ObjectId("5dcc1a794552bedf4414fe78"), "name" : "王五" }
#如果直接使用{sex:null}查询的话,不存在sex的文档也会被查询出来
# 使用$type来查询sex值为null的文档
db.user.find({sex:{$type:10}})
{ "_id" : ObjectId("5dcc1a794552bedf4414fe77"), "name" : "李四", "sex" : null }
# 或
db.user.find({$and:[{sex:null},{sex:{$exists:true}}]})
{ "_id" : ObjectId("5dcc1a794552bedf4414fe77"), "name" : "李四", "sex" : null }
#使用$exists过滤存在属性sex的文档
db.user.find({sex:{$exists:true}})
{ "_id" : ObjectId("5dcc1a794552bedf4414fe76"), "name" : "张三", "sex" : "man" }
{ "_id" : ObjectId("5dcc1a794552bedf4414fe77"), "name" : "李四", "sex" : null }
个人理解,null和不存在的类似与JS中null和undefined。