MongoDB中多个文档上的键值求和

MongoDB中多个文档上的键值求和,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我有一个名为users的集合,其文档的结构如下 { "_id" : <user_id>, "NAME" : "ABC", "TIME" : 53.0, "OBJECTS" : 1 }, { "_id" : <user_id>, "NAME" : "ABCD", "TIME" : 353.0, "OBJECTS" : 70 } 或者任何我不必对接收到的对象进行计算并且可以直接从它访问的方式。现在,我已尝试查找

我有一个名为users的集合,其文档的结构如下

{
    "_id" : <user_id>,
    "NAME" : "ABC",
    "TIME" : 53.0,
    "OBJECTS" : 1
},
{
    "_id" : <user_id>,
    "NAME" : "ABCD",
    "TIME" : 353.0,
    "OBJECTS" : 70
}

或者任何我不必对接收到的对象进行计算并且可以直接从它访问的方式。现在,我已尝试查找此项,但在现有文档的层次结构未被破坏的情况下,我没有发现任何文档。

您可以使用
$group
指定
null
作为分组id。您将所有文档收集到一个数组中(使用
$$ROOT
变量)另一个字段可以表示
对象
的和,如下所示:

db.users.aggregate([
    {
        $group: {
            _id: null,
            documents: { $push: "$$ROOT" },
            TOTAL_OBJECTS: { $sum: "$OBJECTS" }
        }
    }
])
在上面的聚合查询中,我使用操作符将所有文档推送到一个数组中,作为聚合操作$stage的一部分

db.users.aggregate([
    {
        $group: {
            _id: null,
            documents: { $push: "$$ROOT" },
            TOTAL_OBJECTS: { $sum: "$OBJECTS" }
        }
    }
])
db.users.aggregate(

    // Pipeline
    [
        // Stage 1
        {
            $group: {
                _id: null,
                TOTAL_OBJECTS: {
                    $sum: '$OBJECTS'
                },
                documents: {
                    $addToSet: '$$CURRENT'
                }
            }
        },

    ]



);