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"

我有一个MongoDB文档,看起来像这样:

{
  "_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 ] } }
    }
  }
])
有人能帮我吗