在MongoDB中使用聚合来选择文档的两个或多个字段

时间:2013-09-14 17:46:03

标签: mongodb aggregation-framework

我开始使用MongoDB,我有一个关于聚合的问题。我有一个文档在不同的顺序中使用了很多不同的字段。例如:

db.my_collection.insert({ "answers" : [ { "id" : "0", "type" : "text", "value" : "A"}, { "id" : "1", "type" : "text", "value" : "B"}]})


db.my_collection.insert({ "answers" : [ { "id" : "0", "type" : "text", "value" : "C"}, { "id" : "1", "type" : "text", "value" : "A"}]})

我将使用“answers.id”和“answers.value”执行查询以获得结果。

我试过但没有得到结果,在我的情况下,我执行了命令:

db.my_collection.aggregate({$match: {"answers.id":"0", "answers.value": "A"}})

结果是我只期望的两个回复:

{ "answers" : [ { "id" : "0", "type" : "text", "value" : "A"}, { "id" : "1", "type" : "text", "value" : "B"}]

谢谢!!!

1 个答案:

答案 0 :(得分:1)

您需要使用$elemMatch运算符将answers数组的单个元素与指定的“id”和“value”匹配。

这样的事情应该有效:

db.my_collection.aggregate( {
        "$match" : { 
             "answers" { 
                 "$elemMatch" : { 
                        "id" : "0", 
                        "value" : "A"
                 }
             }
         } 
} )