1. 程式人生 > >mongodb中find $ne null 與$exists的區別

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