【发布时间】:2016-04-10 03:45:20
【问题描述】:
我有以下 mongodb 文档
{
"_id" : ISODate("2016-01-04T23:00:11.000+0000"),
"value" : {
"hour" : ISODate("2016-01-04T23:00:00.000+0000"),
"day" : ISODate("2016-01-04T00:00:00.000+0000"),
"time" : ISODate("2016-01-04T23:00:11.000+0000"),
"day_chan1" : 90.162,
"day_chan2" : 77.547,
"day_chan3" : 79.32,
"total_day_chan" : 247.029
}
}
{
"_id" : ISODate("2016-01-04T23:00:23.000+0000"),
"value" : {
"hour" : ISODate("2016-01-04T23:00:00.000+0000"),
"day" : ISODate("2016-01-04T00:00:00.000+0000"),
"time" : ISODate("2016-01-04T23:00:23.000+0000"),
"day_chan1" : 90.167,
"day_chan2" : 77.549,
"day_chan3" : 79.322,
"total_day_chan" : 247.038
}
}
{
"_id" : ISODate("2016-01-04T23:00:35.000+0000"),
"value" : {
"hour" : ISODate("2016-01-04T23:00:00.000+0000"),
"day" : ISODate("2016-01-04T00:00:00.000+0000"),
"time" : ISODate("2016-01-04T23:00:35.000+0000"),
"day_chan1" : 90.172,
"day_chan2" : 77.551,
"day_chan3" : 79.324,
"total_day_chan" : 247.047
}
}
我想根据日期子文档对文档进行分组和排序,因此同一天的所有数据都将出现在一个数组中。
到目前为止,我尝试使用
.aggregate([{
'$sort': {
'_id': 1
}
},
{
'$group' : {
'_id': '$value.day',
'data': {
'$push' : '$value'
}
}
},
{
'$project': {
'_id' : 1,
'data':1
}
}
]);
但我注意到来自两个不同日期的数据进入同一个数组
这是我在其中一个数组中得到的内容
{ hour: Tue Jan 05 2016 00:00:00 GMT+0000 (GMT),
day: Tue Jan 05 2016 00:00:00 GMT+0000 (GMT),
time: Tue Jan 05 2016 00:00:12 GMT+0000 (GMT),
day_chan1: 91.635,
day_chan2: 78.274,
day_chan3: 80.062,
total_day_chan: 249.971 }
{ hour: Mon Jan 04 2016 23:00:00 GMT+0000 (GMT),
day: Mon Jan 04 2016 00:00:00 GMT+0000 (GMT),
time: Mon Jan 04 2016 23:00:11 GMT+0000 (GMT),
day_chan1: 90.162,
day_chan2: 77.547,
day_chan3: 79.32,
total_day_chan: 247.029 }
但理想情况下,这两个应该在单独的数组中
[{ hour: Tue Jan 05 2016 00:00:00 GMT+0000 (GMT),
day: Tue Jan 05 2016 00:00:00 GMT+0000 (GMT),
time: Tue Jan 05 2016 00:00:12 GMT+0000 (GMT),
day_chan1: 91.635,
day_chan2: 78.274,
day_chan3: 80.062,
total_day_chan: 249.971 }, {
},{ hour: Tue Jan 05 2016 00:0:00 GMT+0000 (GMT),
day: Tue Jan 05 2016 00:00:00 GMT+0000 (GMT),
time: Tue Jan 05 2016 01:01:12 GMT+0000 (GMT),
day_chan1: 91.635,
day_chan2: 78.274,
day_chan3: 80.062,
total_day_chan: 249.971 }],
[{ hour: Mon Jan 04 2016 23:00:00 GMT+0000 (GMT),
day: Mon Jan 04 2016 00:00:00 GMT+0000 (GMT),
time: Mon Jan 04 2016 23:00:11 GMT+0000 (GMT),
day_chan1: 90.162,
day_chan2: 77.547,
day_chan3: 79.32,
total_day_chan: 247.029 }]
同一天的所有文档将被收集到一个数组中
[Date1 的数组,Date2 的数组,date3 的数组] 等等。
【问题讨论】:
-
你能告诉我们你的预期输出是什么,你从命令中得到了什么?
-
我正在运行与您提供的相同的命令并获得正确的结果。
-
我有 40,000 个文档,所以有时会出现错误。
-
两天的数据被收集到同一个数组中。
标签: mongodb aggregation-framework