为什么$ match不返回数据,但.find会返回Mongodb中的一些数据?

时间:2016-11-07 09:06:12

标签: mongodb mongodb-query

我有一个mongo查询,如下所示:

db.membership.find({ "$match" : { "members.sourcedid.id" : "0144401" , "sourcedid.path.store" : "0985" , "sourcedid.path.campus" : "2E3A9B7C-6C8E-433C-85FC-4632FD7C90CD"}})

它不会返回任何结果。

但如果我运行以下命令则会返回结果:

db.membership.find({ "members.sourcedid.id" : "0144401" , "sourcedid.path.store" : "0985" , "sourcedid.path.campus" : "2E3A9B7C-6C8E-433C-85FC-4632FD7C90CD"})

我不确定为什么会这样。任何人都可以帮忙吗?我是mongodb的新手

感谢。

1 个答案:

答案 0 :(得分:1)

它不会产生任何结果,因为 $match 运算符仅适用于聚合框架,而不适用于 find() 方法。

上述查询可以使用 aggregate() 方法

运行
db.membership.aggregate([
    { 
        "$match" : { 
            "members.sourcedid.id": "0144401", 
            "sourcedid.path.store": "0985", 
            "sourcedid.path.campus": "2E3A9B7C-6C8E-433C-85FC-4632FD7C90CD"
        }
    }
])