我在mongo中有一些看起来像这样的文档:
{
_id : ObjectId("..."),
"make" : "Nissan",
..
},
{
_id : ObjectId("..."),
"make" : "Nissan",
"saleDate" : ISODate("2013-04-10T12:39:50.676Z"),
..
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我希望能够计算出每天销售的车辆数量.然后,我想要查看今天或者过去七天这样的窗口.
我能用一些丑陋的代码完成日常视图
db.inventory.aggregate(
{ $match : { "saleDate" : { $gte: ISODate("2013-04-10T00:00:00.000Z"), $lt: ISODate("2013-04-11T00:00:00.000Z") } } } ,
{ $group : { _id : { make : "$make", saleDayOfMonth : { $dayOfMonth : "$saleDate" } }, cnt : { $sum : 1 } } }
)
Run Code Online (Sandbox Code Playgroud)
然后产生结果
{
"result" : [
{
"_id" : {
"make" : "Nissan", …Run Code Online (Sandbox Code Playgroud) 这是一个记录客户收藏
{
name: xyz,
.
.
.
createdAt: Sun Nov 20 2016 00:00:00 GMT+0530 (IST)
lastModified: Sat Dec 10 2016 00:00:00 GMT+0530 (IST)
}
Run Code Online (Sandbox Code Playgroud)
我需要能够根据日期对客户进行修改
eg: Date Count(lastModified)
11-20-2016 10
12-20-2016 7
13-20-2016 9
Run Code Online (Sandbox Code Playgroud)
我希望结果分组这样的东西.
我正在尝试按日期字符串进行分组并计算每个日期有多少数据。
首先,我将 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 },但它仍然显示相同的错误,因此问题出在分组依据上。
请随时询问更多信息以帮助我。