为什么我从多标准查询中获得此结果?

时间:2015-08-18 17:54:29

标签: mongodb

在mongo上,我发出以下查询:

db.usertest.find({ "events.event":"event0", "events.event":"event1", "events.event":"eventX" })

根据这里的文档http://docs.mongodb.org/manual/tutorial/query-documents/#id4,我希望这只能匹配数组中包含所有这三个元素的文档。

但是,它与此doc匹配:

{ "_id" : "userbruce", "events" : [ { "event" : "eventX" } ] }

为什么?

文档说这种格式匹配的文档"包含某些组合满足查询条件的元素"什么是匹配event0或event1?

编辑:它是否因为我每次放入相同的字段而感到困惑?

1 个答案:

答案 0 :(得分:0)

对于使用此数据的AND操作,请尝试以下查询:

db.usertest.find({$and : [{ "events.event":"event0"}, {"events.event":"event1"}, {"events.event":"eventX" }]})

是的,混乱是因为你每次都给予相同的领域。如果你尝试下面的文件:

{
    "_id" : "userbruce",
    "events" : [ 
        {
            "eventA" : "eventX"
        }, 
        {
            "eventB" : "event0"
        }, 
        {
            "eventC" : "event1"
        }
    ]
}

然后,您的查询将不会给出任何结果。因此,您的查询是正确的,但数据不适合该查询。