Mongodb 3.4.7分组后一个字段的聚合不同计数

Mongodb 3.4.7分组后一个字段的聚合不同计数,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我有 我想按statement.activity.definition.name进行分组,并在每个组中计算actor.name的不同计数。如何做到这一点 { "statement": { “activity”: { "definition": { “name”: “ACT_NAME1” } }, "actor": { "name": "User 2” } }, "statement": { “activity”:

我有

我想按statement.activity.definition.name进行分组,并在每个组中计算actor.name的不同计数。如何做到这一点

{
"statement": {
   “activity”: {
    "definition": {
             “name”: “ACT_NAME1”
    }
    },
"actor": {
       "name": "User 2”
    }
},
"statement": {
   “activity”: {
    "definition": {
             “name”: “ACT_NAME2”
    }
    },
"actor": {
       "name": "User 1"
    }
},
"statement": {
   “activity”: {
    "definition": {
             “name”: “ACT_NAME2”
    }
    },
"actor": {
       "name": "User 1"
    }
},
"statement": {
   “activity”: {
    "definition": {
             “name”: “ACT_NAME1”
    }
    },
"actor": {
       "name": "User 1"
    }
 }
}

我还有一些匹配条件,这里没有提供。

使用
$addToSet
将分组项目累积到一个集合中(唯一元素)


首先,“我有”这个片段毫无意义。它不是有效的json文档。除此之外,你没有展示你至少使用$group的尝试。非常感谢可能的重复!成功了,你救了我。有没有办法添加一个像t输出这样的键?{“activity_statements_users_count”:[{},{},{},{}]}你是什么意思?{}代表什么?噢,这是我们的输出。说:
{u id:“保存或关闭酒店-你会有什么建议?”,“用户”:[“Rohit.LMS Test”],“姓名”:“保存或关闭酒店-你会有什么建议?”,“声明计数”:1,“唯一用户计数”:1}
现在我得到这样的回答:[{},{},{},{}。我能用散列键把它包起来吗
{activity\u statements\u users\u count:{[{{},{},{},{}]}
我们可以使用项目上面的组条件吗?我在某个地方读到那群人排在最后。
{ activity: ACT_NAME1
  unique_actor_count: 2 }

{ activity: ACT_NAME2
 unique_actor_count: 1 }
document.collection.aggregate([
    {$match: {}},
    {$group: 
         {
            _id: '$statement.activity.definition.name',
            actors: {$addToSet: '$statement.actor.name'}
         }
     },
     {$project: {
         _id: '$_id',
         actors: '$actors',
         uniqueActorsCount: {$size: '$actors'}
     }}
])