如果在mongodb中有两个条件要满足,如何聚合

时间:2014-02-01 18:34:29

标签: mongodb

嗨,我是mongodb的新手,当有两个条件需要满足时我很困惑

这两个条件是: 最低分和类型应该是家庭作业

这是我的架构设计:

    "_id" : 0,
"name" : "aimee Zank",
    "scores" : [
        {
            "type" : "exam",
            "score" : 1.463179736705023
        },
        {
            "type" : "quiz",
            "score" : 11.78273309957772
        },
        {
            "type" : "homework",
            "score" : 6.676176060654615
        },
        {
            "type" : "homework",
            "score" : 35.8740349954354
        }
    ]
}

我打算做的是查询最低的作业得分。因此,在上面的模式设计中,我计划查询第三个元素,因为它是作业的最低分数。

我现在制作的mongodb查询是:

db.students.aggregate( [ 
    { "$unwind": "$scores" },
    { "$match" : {"type" : "homework"}},
    {"$group": { '_id':'$_id', 'score': {'$min': "$scores.score" } } }
    ])

但执行此查询后我得到的是:

{ "result" : [ ], "ok" : 1 }

2 个答案:

答案 0 :(得分:2)

您可能会在“匹配”中查看您的情况:您必须指定完整路径。

这意味着你应该这样做:

[{"$unwind": "$scores"}, {"$match": {"scores.type":"homework"}}, {"$group": { '_id':'$_id', 'score': {'$min': "$scores.score" } }}]

注意“scores.type”

答案 1 :(得分:1)

我希望这有帮助 你必须使用和运算符 http://docs.mongodb.org/manual/reference/operator/query/and/