嵌套数组元素的mongodb$组
对于给定的问题,我有以下mongodb集合(问题答案)嵌套数组元素的mongodb$组,mongodb,aggregate,Mongodb,Aggregate,对于给定的问题,我有以下mongodb集合(问题答案) { "_id" : { "$oid" : "59cda8b730a0131cfafc9101" }, "questionId" : { "$oid" : "59cb7b85c854036fec173267" }, "userQuestionAnswerDetails" : [ { "srno" : 1, "correct_yn" : false}, { "srno" : 2, "correct_yn" : false} ] }
{
"_id" : { "$oid" : "59cda8b730a0131cfafc9101" },
"questionId" : { "$oid" : "59cb7b85c854036fec173267" },
"userQuestionAnswerDetails" : [ { "srno" : 1, "correct_yn" : false}, {
"srno" : 2, "correct_yn" : false} ]
}
{
"_id" : { "$oid" : "59cdb1b930a0131cfafc9102" },
"questionId" : { "$oid" : "59cb7b85c854036fec173267" },
"userQuestionAnswerDetails" : [ { "srno" : 2, "correct_yn" : false} ]
}
{
"_id" : { "$oid" : "59cdbb1b30a0131cfafc9105" },
"questionId" : { "$oid" : "59cb7b85c854036fec173267" },
"userQuestionAnswerDetails" : [ { "srno" : 2, "correct_yn" : false} ]
}
{
"_id" : { "$oid" : "59cdd26a30a0131cfafc9107" },
"questionId" : { "$oid" : "59cb7b85c854036fec173267" },
"userQuestionAnswerDetails" : [ { "srno" : 1, "correct_yn" : false} ]
}
我需要每个sr编号的cnt,它位于嵌套数组元素内。
预计:
Srno==>cnt
1=>2
2=>3
我正在尝试下面的查询
db.questionanswers.aggregate([
{
$match:{
$and: [
{questionId: ObjectId("59cb7b85c854036fec173267")}
]
}
},
{
$group : {_id : {questionId:"$questionId", userQuestionAnswerDetails: "$userQuestionAnswerDetails.srno"}, num_tutorial : {$sum : 1}}
}
])
上述查询给了我类似于以下内容的信息:
{"_id": {"questionId":"ObjectId(59cb7b85c854036fec173267)", "userQuestionAnswerDetails":[1,2]},"num_tutorial":1}
{"_id":{"questionId":"ObjectId(59cb7b85c854036fec173267)", "userQuestionAnswerDetails":[1]},"num_tutorial":1}
{"_id":{"questionId":"ObjectId(59cb7b85c854036fec173267)", "userQuestionAnswerDetails":[2]},"num_tutorial":2}
这相当于
Srno==>Cnt
1,2=>1
1==>1
2==>2
如何修改$group以达到预期的结果?提前感谢。您可以通过添加
$unwind
stage来完成
db.questionanswers.aggregate([
{
$match:{
$and: [
{questionId: ObjectId("59cb7b85c854036fec173267")}
]
}
}
,{
$unwind: "$userQuestionAnswerDetails"
}
,{
$group : {_id : {questionId:"$questionId", userQuestionAnswerDetails: "$userQuestionAnswerDetails.srno"}, num_tutorial : {$sum : 1}}
}
])
结果:
{ "_id" : { "questionId" : ObjectId("59cb7b85c854036fec173267"), "userQuestionAnswerDetails" : 2 }, "num_tutorial" : 3 }
{ "_id" : { "questionId" : ObjectId("59cb7b85c854036fec173267"), "userQuestionAnswerDetails" : 1 }, "num_tutorial" : 2 }