如何聚合MongoDB嵌套查询?

如何聚合MongoDB嵌套查询?,mongodb,mongodb-query,aggregation-framework,pymongo,aggregate-functions,Mongodb,Mongodb Query,Aggregation Framework,Pymongo,Aggregate Functions,因此,我已经尝试聚合两组特定的文档相当长的一段时间了,但直到现在都没有成功。 我的文件是: 文件1: { "_id": { "$oid": "606d68e88346778f70f14b50" }, "user": 123, "task1": { "Humor":

因此,我已经尝试聚合两组特定的文档相当长的一段时间了,但直到现在都没有成功。 我的文件是: 文件1:

 {
        "_id": {
            "$oid": "606d68e88346778f70f14b50"
        },
        "user": 123,
        "task1": {
            "Humor": 0,
            "Spirituality": 1,
            "Fairness": 0
        },
        "task2": {
            "Humor": 0,
            "Spirituality": 1,
            "Fairness": 0
        },
        "task3": {
            "Humor": 0,
            "Spirituality": 1,
            "Fairness": 0
        }
    }
文件2:

{
    "_id": {
        "$oid": "606d68fe8346778f70f14b51"
    },
    "user": 123,
    "task1": {
        "Humor": 0,
        "Spirituality": 1,
        "Fairness": 0
    },
    "task2": {
        "Humor": 0,
        "Spirituality": 1,
        "Fairness": 0
    },
    "task3": {
        "Humor": 0,
        "Spirituality": 1,
        "Fairness": 0
    }
}
我想做的是汇总所有文档中所有特征的分数。例如: 我的灵性在文件1中出现了三次,如果我总结一下,我在文件1中得到了3分,在文件2中又得到了3分,总分为6分


预期产出应为:

{"user":123,"Humor":0,"Spirituality":6,"Fairness":0}
我一直在尝试不同的方法,但到目前为止没有任何效果。非常感谢您的帮助。

演示-

$group
通过
userid
将任务推送到个人task1、task2、task3阵列

在第二个管道中,
$project
组合成一个
任务
数组

在第三条管道中获取和

db.collection.aggregate([
  { $group: { _id: "$user", task1: { $push: "$task1" }, task2: { $push: "$task2" }, task3: { $push: "$task3" } } },
  { $project: { _id: 0, userId: "$_id", tasks: { "$concatArrays": ["$task1", "$task2", "$task3"] }} },
  { $project: { userId: 1, "Spirituality": {   $sum: "$tasks.Spirituality" }, "Humor": { $sum: "$tasks.Humor" }, "Fairness": {   $sum: "$tasks.Fairness" } }
  }
])

请为示例文档添加预期输出。预期输出应为:{“用户”:123,“幽默”:0,“精神”:6,“公平”:0}请编辑问题并添加详细信息。刚刚完成,请检查