MongoDB的空值查询问题
2020-03-20 本文已影响0人
兰陵笑_生
查询有值的情况
大家都知道可以使用
db.mycollection.find({"myField":{$exists:true}});
来查询出指定字段值不存在的所有集何。
可是假设这个字段的值为null,包含这个字段的集合仍然会被筛选出来。
需要查询出某个字段存在且不为空的时候就需要用到
db.mycollection.find({"myfield":{$ne:null}});
来查询。
并且 $exists 无法利用到索引, 但$NE 可以用上索引, 出于于性能的考虑尽可能用 $ne:null
查询无值的情况
1.查询集合中字段的值为null或者不存在
db.mycollection.find({"myfield":null});
2.查询集合中字段的值为null,(仅返回字段的值为null的数据,不会返回不存在的)
db.myCollection.find({ “myField” : { $type : 10 } } )
db.myCollection.find({“myField”:{“$in”:[null], “$exists”:true}})
3.查询集合中字段的值不存在(不会返回字段的值为null的数据)