如何按时间段按日期显示计数数据的数量。
我们有老虎机
[{'startTime': "2017-04-20T08:30:00.000Z", 'endTime': "2017-04-20T09:30:00.000Z"},
{'startTime': "2017-04-20T09:30:00.000Z", 'endTime': "2017-04-20T10:30:00.000Z"},
{'startTime': "2017-04-20T10:30:00.000Z", 'endTime': "2017-04-20T18:30:00.000Z"}]
输入
[{
"createdAt" : ISODate("2017-04-20T09:20:00.167Z"),
},
{
"createdAt" : ISODate("2017-04-20T14:20:00.167Z")
},
{
"createdAt" : ISODate("2017-04-20T11:20:00.167Z")
},
{
"createdAt" : ISODate("2017-04-20T14:20:00.167Z")
},
{
"createdAt" : ISODate("2017-04-20T12:20:00.167Z")
}]
以此格式显示数据
输出
[{'startTime': "2017-04-20T08:30:00.000Z", 'endTime': "2017-04-20T09:30:00.000Z", 'count' : 1},
{'startTime': "2017-04-20T09:30:00.000Z", 'endTime': "2017-04-20T10:30:00.000Z", 'count':0 },
{'startTime': "2017-04-20T10:30:00.000Z", 'endTime': "2017-04-20T18:30:00.000Z"}, 'count' : 4]
最佳答案
var tempData = [],
for(var i = 0; i <inputData.length ; i++){
var condition = {
'$sum':{'$cond':
[{'$and':
[{'$gte': ['$checkinData.time', new Date(inputData[i].startTime)]},
{'$lt' : ['$checkinData.time', new Date(inputData[i].endTIme)]}
]},1,0]
}
}
tempData.push(condition);
}
关于node.js - MongoDB中根据时间段获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46387381/