1.
test collection 数据为:
db.test.find()
{ "_id" : ObjectId("5be29949f1acad52e4c10b98"), "name" : "jane", "info" : [ ] }
{ "_id" : ObjectId("5be29952f1acad52e4c10b99"), "name" : "mike", "info" : { } }
{ "_id" : ObjectId("5be29ab7f1acad52e4c10b9a"), "name" : "john", "info" : { "age" : 19, "height" : 180 } }
2.
执行以下命令时:
db.test.find({"info.age":{"$ne":null}})
info 为[] 的也会被找到。网上找了下没找到具体解释。
{ "_id" : ObjectId("5be29949f1acad52e4c10b98"), "name" : "jane", "info" : [ ] }
{ "_id" : ObjectId("5be29ab7f1acad52e4c10b9a"), "name" : "john", "info" : { "age" : 19, "height" : 180 } }
3.
db.test.find({"info.weight":{"$ne":null}})
{ "_id" : ObjectId("5be29949f1acad52e4c10b98"), "name" : "jane", "info" : [ ] }
4.
但是如果执行以下语句。
db.test.find({"info.age":{"$exists":true}})
只有一条数据找到。
{ "_id" : ObjectId("5be29ab7f1acad52e4c10b9a"), "name" : "john", "info" : { "age" : 19, "height" : 180 } }