MongoDB:对值的次数求和==";“一些字符串”;在数组中的对象中
我有一个MongoDB文档,看起来像这样:MongoDB:对值的次数求和==";“一些字符串”;在数组中的对象中,mongodb,mongoose,aggregation-framework,Mongodb,Mongoose,Aggregation Framework,我有一个MongoDB文档,看起来像这样: { "_id": 000000000001, "sample": [ { "_id": { "$oid": "12345678910" }, "Phone": 5555555555, "LastName": "Musk", "FirstName": "Elon", "responses": { "question1": "hello"
{
"_id": 000000000001,
"sample": [
{
"_id": {
"$oid": "12345678910"
},
"Phone": 5555555555,
"LastName": "Musk",
"FirstName": "Elon",
"responses": {
"question1": "hello",
"question2": "world"
}
},
{
"_id": {
"$oid": "12345678911"
},
"Phone": "1111111111",
"LastName": "Jobs",
"FirstName": "Steve",
"responses": {
"question1": "goodbye",
"question2": "world"
}
}
]
}
{ 'question1': 1, 'question2': 2 }
我想得到对问题1
做出回复的所有人的$sum
,以及对问题2
做出回复的所有人的$sum
比如说。我想要一个类似以下内容的响应:
{
"_id": 000000000001,
"sample": [
{
"_id": {
"$oid": "12345678910"
},
"Phone": 5555555555,
"LastName": "Musk",
"FirstName": "Elon",
"responses": {
"question1": "hello",
"question2": "world"
}
},
{
"_id": {
"$oid": "12345678911"
},
"Phone": "1111111111",
"LastName": "Jobs",
"FirstName": "Steve",
"responses": {
"question1": "goodbye",
"question2": "world"
}
}
]
}
{ 'question1': 1, 'question2': 2 }
我的查询看起来像这样,但不起作用。只有当我知道情况并非如此时,才会对任何给定的总和返回0
db.collection(collection).aggregate([
{ $match : { } },
{ $group: {
_id: "responses",
"question1": { $sum: { $cond: [ { $eq: [ "$sample.responses.question1", "hello"] }, 1, 0 ] } },
"question2": { $sum: { $cond: [ { $eq: [ "$sample.responses.question2", "world"] }, 1, 0 ] } }
}
}
])
有人能帮我吗