node.js - MongoDB中根据时间段获取数据

标签 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"}, '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/

相关文章:

javascript - 在 HTML 和 Node JS 之间发送数组字段

node.js - "jmp run"打开firefox但不打开任何url

java - 构建 spring boot 项目而不实例化 mongo

node.js - Mongoose 查询 : compare two values on same document

node.js - 在链式 Promisified 函数内创建 MongoDB 文档

javascript - javascript/node.js 中的 seek() 等价物?

javascript - 将 NodeJS 与 Express 3.x 和 Jade 模板一起使用是否可以只为先前呈现的列表重新呈现一个项目?

MongoDB半夜关闭,无法恢复

python - pymongo - 搜索包含 $ 和运算符的文档集合,不区分大小写

node.js - 洞察两种 REST API 设计的可行性