我正在尝试按日期字符串进行分组并计算每个日期有多少数据。
首先,我将 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" : "The field 'date' must be an accumulator object"
我认为这应该有效。我首先将 ISOdate 转换为日期字符串。我按日期字符串分组并计算每个日期。我尝试删除 count: { $sum: 1 }
它仍然显示相同的错误,因此问题出在分组依据上。
请随时询问更多信息,以便为我提供帮助。
最佳答案
您应该使用_id
来指定分组键:
db.closing_nassau.aggregate([
{
$project: {
yearMonthDay: { $dateToString: { format: "%Y-%m-%d", date: "$detail.file_date" } }
}
},
{ $group: { _id: "$yearMonthDay", count: { $sum: 1 } } },
])
看看here
关于mongodb - 该字段必须是累加器对象。 (该字段是日期字符串。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55763552/