需要获取以下查询才能正确输出

Need to get the following query to output correctly

大家好,我一整天都在尝试构建这个简单的 mongo 查询,但我无法获得所需的输出。下面是查询和当前输出。

db.customers.aggregate(
{ $match : { "status" : "Closed" } },
{ $unwind: "$lines" },
{ $group : {
        _id:{label: "$lines.label",date: {$substr: [ "$date", 0, 10 ]}},
        values: { $push:  { date: {$substr: [ "$date", 0, 10 ]}} },
        count: { $sum: 1 }
    }},
{ $project : {
        _id : 1,
        values:1,
        count:1
    }}
);

输出如下。

{
    "result": [
        {
            "_id": {
                "label": "label",
                "date": "2010-10-01"
            },
            "values": [
                {
                    "date": "2010-10-01"
                },
                {
                    "date": "2010-10-01"
                },
                {
                    "date": "2010-10-01"
                },
                {
                    "date": "2010-10-01"
                }
            ],
            "count": 4
        },
        {
            "_id": {
                "label": "label",
                "date": "2010-10-10"
            },
            "values": [
                {
                    "date": "2010-10-10"
                }
            ],
            "count": 1
        },
        {
            "_id": {
                "label": "label",
                "date": "2010-07-25"
            },
            "values": [
                {
                    "date": "2010-07-25"
                }
            ],
            "count": 1
        }
    ]
}

然而,下面的输出是我正在寻找但无法获得的输出。我显然可以得到我想要的所有数据,只是在错误的地方。

{
    "result": [
        {
            "_id": "label",
            "values": [
                {
                    "date": "2010-11-27",
                    "count": 4
                },
                {
                    "date": "2010-10-10",
                    "count": 1
                },
                {
                    "date": "2010-07-25",
                    "count": 1
                }
            ]
        }
    ]
}

一如既往地感谢您的帮助和支持。

你能试试这个吗:

db.customers.aggregate([
{ $match : { "status" : "Closed" } },
{ $unwind: "$lines" },
{ $group : {
        _id:{label: "$lines.label",date: {$substr: [ "$date", 0, 10 ]}},
        values: { $push:  { date: {$substr: [ "$date", 0, 10 ]}} },
        count: { $sum: 1 }
    }},
// This one I added to group them behind a single label in an array list
{ $group : {
        _id:{
                label: "$_id.label"
        },
        values : { 
               $push : { date : "$date", count : "$count" } 
        }
  }
},
{ $project : {
        _id : 1,
        values:1,
        count:1
  }
}
]);

如果我答对了你的问题,你喜欢将 counts + dates 分组到一个值数组中。你可以在第一个小组赛阶段后用 $push 做。