mongodb中find $ne null 与$exists的区别

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 } }

你可能感兴趣的:(MongoDB)