该字段必须是累加器对象。(该字段是日期字符串。)

Mar*_*Lee 2 aggregate-functions mongodb

我正在尝试按日期字符串进行分组并计算每个日期有多少数据。

首先,我将 ISOdate 转换为日期字符串:

db.test.aggregate([
    {
        $project: {
                yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$file_date" } }
        }
    },
])
Run Code Online (Sandbox Code Playgroud)

结果:

此处输入图像描述

到目前为止一切都很好,直到我这样做:

db.closing_nassau.aggregate([
    {
        $project: {
                yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$detail.file_date" } }
        }
    },
    { $group: { date: "$yearMonthDay", count: { $sum: 1 } } },
])
Run Code Online (Sandbox Code Playgroud)

一直显示:

"message" : "字段‘日期’必须是累加器对象”

我认为这应该有效。我首先将 ISOdate 转换为日期字符串。我按日期字符串分组并计算每个日期。我尝试删除它count: { $sum: 1 },但它仍然显示相同的错误,因此问题出在分组依据上。

请随时询问更多信息以帮助我。

mic*_*ckl 5

您应该使用_id指定分组键:

db.closing_nassau.aggregate([
    {
        $project: {
                yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$detail.file_date" } }
        }
    },
    { $group: { _id: "$yearMonthDay", count: { $sum: 1 } } },
])
Run Code Online (Sandbox Code Playgroud)

看看这里