0
我有一個集合如下
{
"_id" : ObjectId("55bec0793bed809b2cb658ad"),
"lock_1" : ["desc_1","desc_2"],
"lock_2" : ["desc_1"]
},
{
"_id" : ObjectId("55bec0793bed809b2cb658ab"),
"lock_1" : ["desc_1","desc_2","desc_3"],
"lock_2" : ["desc_1"]
}
{
"_id" : ObjectId("55bec0793bed809b2cb658ac"),
"lock_1" : ["desc_1"],
"lock_2" : []
},
{
"_id" : ObjectId("55bec0793bed809b2cb658ae"),
"lock_1" : [],
"lock_2" : ["desc_1"]
},
{
"_id" : ObjectId("55bec0793bed809b2cb658aj"),
"lock_1" : ["desc_3","desc_4"],
"lock_2" : ["desc_5"]
},
{
"_id" : ObjectId("55bec0793bed809b2cb658ak"),
"lock_1" : [],
"lock_2" : []
}
我以下面的查詢檢索所有具有兩個「lock_1」「desc_1」和「lock_2」陣列的文件,返回前兩個文件,這是正確的。
db.locks.find({ $and: [ {lock_1 : "desc_1"} , {lock_2 : "desc_1"} ] })
現在,我正在嘗試獲取不滿足上述條件的文檔。我試着使用下面的查詢,但它返回最後兩個文件。
db.locks.find({ $nor: [ {lock_1 : "desc_1"} , {lock_2 : "desc_1"} ] })
如何檢索其中「desc_1」不存在或存在於某個數組中的文檔?
我覺得這比我的答案要好。更好地利用$ NE超過$寧在這種情況下。 – sergiuz