根据MongoDB中的时间段获取数据

时间:2017-09-24 06:47:36

标签: node.js mongodb mongoose aggregation-framework

如何按日期按日期显示计数数据。

我们有广告位

  

[{'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”},       '数':4]

2 个答案:

答案 0 :(得分:1)

exec('python /var/pi/www/html/Currenttestpy.py', $out, $status);

echo 'Status : ' . $status . '.' ;

答案 1 :(得分:0)

您可以使用MongoDB的$gte(大于或等于),$lte(小于或等于),$gt(大于)  和$lt(小于)指定日期范围。您可以指定"来自" $gte/$gt中的日期和"至"日期$lte/$lt

所以你的查询应该是这样的 -

db.collection.count({createdAt: {$gte: "your from date in ISO date object format", $lte: "your to date in ISO date object format"}}, function (err, count){
    //whatever you wanna do with count
})

db.collection.find({createdAt: {$gte: "your from date in ISO date object format", $lte: "your to date in ISO date object format"}}).count(function (err, count){
    //whatever you wanna do with count
})

对于每个时隙,您必须在循环中运行它。所以就像一个例子,它看起来像 -

db.collection.find({createdAt: {$gte: timeRangeArr[i].startTime, $lte: timeRangeArr[i].endTime}}).count(function (err, count){
    //whatever you wanna do with count
})