Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB使用$and和$nor运算符查找查询_Mongodb_Mongodb Query - Fatal编程技术网

MongoDB使用$and和$nor运算符查找查询

MongoDB使用$and和$nor运算符查找查询,mongodb,mongodb-query,Mongodb,Mongodb Query,我有一个收藏如下 { "_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("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”和“lock_2”数组中都有“desc_1”的文档,返回了前两个文档,这是正确的

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”不存在或在其中一个数组中存在的文档

db.locks.find({ 
    $or: [ 
        { lock_1 : { $nin: [ "desc_1" ] }} , 
        { lock_2 : { $nin: [ "desc_1" ] }} 
    ]
})
参考: 这里需要的是执行逻辑操作的运算符和直接测试字段内容的运算符

db.locks.find({
“$or”:[
{“lock_1”:{“$ne”:“desc_1”},
{“lock_2”:{“$ne”:“desc_1”}
] 
})

我认为这比我的答案要好。在这种情况下,最好使用$ne而不是$nin。