【发布时间】:2020-01-17 23:01:15
【问题描述】:
我有一个具有以下架构的数据集:
Schema({
'ID': {type:Number},
'Date': {type:Date},
'DrivingHours':{type:Number}
})
我喜欢通过分组到以下结果来聚合:
[
{
"DrivingHours": [
{
"9": 2.6061111111111113,
"36": 0,
"54": 0.016944444444444446,
"Date": "2019-9-1"
},
{
"9": 0.5738888888888889,
"36": 0,
"54": 0,
"Date": "2019-9-2"
},
...
因为钥匙是我车辆的 ID。通过以下管道,我接近了我的目标,但无法整合“日期”。使用'$replaceRoot'后如何添加此参数有技巧吗?
{$facet: {
DrivingHours: [
{$group: {_id: {Date: '$Date', ID: '$ID'},
ID: {$first: '$ID'},
DrivingHours: {$first: '$DrivingHours'}
}},
{$group: {_id: '$_id.Date',
arrDrivingHours: {
$push: {'k': { $toString: '$ID' }, 'v':{ $ifNull: [ '$DrivingHours', 0 ] }}
}}},
{'$replaceRoot':{
newRoot: {$arrayToObject:'$arrDrivingHours'}
}
}
]
}}
我正在使用 facet,因为我想稍后添加数据集的其他方面,但效果更好。
【问题讨论】:
-
能否也附上on2 demo在这里mongoplayground.net你目前所做的事情,这样的问题很容易为别人解答。
-
感谢@SaikatChakrabortty 在 playgrond.net 上的精彩提示。我只是用一些假数据建立了一个例子,在那里你可以看到我到目前为止已经意识到的:mongoplayground.net/p/ik4pdq9JF0P
标签: node.js express mongoose grouping aggregate