【问题标题】:The field must be an accumulator object. (The field is date string.) [duplicate]该字段必须是一个累加器对象。 (该字段是日期字符串。)[重复]
【发布时间】:2019-04-19 14:38:57
【问题描述】:

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

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

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

结果:

到目前为止一切顺利,直到我这样做:

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

一直显示:

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

我认为这应该可行。我首先将 ISOdate 传输到日期字符串。我按日期字符串分组并计算每个日期。我已经尝试删除count: { $sum: 1 },但它仍然显示相同的错误,所以问题出在 group by 上。

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

【问题讨论】:

    标签: mongodb aggregate-functions


    【解决方案1】:

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

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

    看看here

    【讨论】:

    • 你是上帝。你拯救了我的一天!非常感谢!一定会阅读链接!
    猜你喜欢
    • 2020-01-01
    • 2019-07-16
    • 2019-06-23
    • 2017-10-17
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-20
    相关资源
    最近更新 更多