Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回具有到期日的mongodb查询+;12小时?_Mongodb_Performance_Mongoose_Database - Fatal编程技术网

返回具有到期日的mongodb查询+;12小时?

返回具有到期日的mongodb查询+;12小时?,mongodb,performance,mongoose,database,Mongodb,Performance,Mongoose,Database,我有两个参数的事件对象: 当他们开始的时候, 当它们结束时的“到期日” 这是非常简单的阵列结构: { "name" : "war machine", "due" : ISODate("2015-11-09T15:30:00.000Z"), "at" : ISODate("2015-11-09T11:30:00.000Z"), } 我想要一个查询,如果可能的话,可以这样做: 1) 返回“at”时间低于Date.now的事件。 这个很简单: this.model('Ev').f

我有两个参数的事件对象: 当他们开始的时候, 当它们结束时的“到期日”

这是非常简单的阵列结构:

{
   "name" : "war machine",
   "due" : ISODate("2015-11-09T15:30:00.000Z"),
   "at"  : ISODate("2015-11-09T11:30:00.000Z"),
}
我想要一个查询,如果可能的话,可以这样做:

1) 返回“at”时间低于Date.now的事件。 这个很简单:

this.model('Ev').find(
    {at:{$lt:Date.now()}
}).exec();
2) 返回比现在短12小时的dueDate。 也就是说,如果事件现在到期,它仍将在接下来的12小时内为我返回此对象

例如,如果我只执行第一个查询,而不是使用javascript:

var dueTime = 43,200,000; // 12 hours in millseconds
  eventsReturned.forEach(function(e){

            if ( Date.now() - event.due.getTime() < dueTime ) {
               //This event should return
            }
        });
var dueTime=43200000;//12小时,以百万秒计
eventsReturned.forEach(函数(e){
if(Date.now()-event.due.getTime()
我得到了我想要的结果,在没有javascript参与的情况下如何在查询中这样做?

3*24*60*60000=3天

所以

12*60*60000=12小时

dueDate=date.Now()+(12*60*60000)

就我个人而言,我还没有测试代码。执行此操作并让我知道它是否有效:)

如果“Date.now()-event.due.getTime()
Date.now() - event.due.getTime() < dueTime
=>
Date.now() < dueTime + event.due.getTime()
=>
Date.now() - dueTime < event.due.getTime()
=>
event.due.getTime() > Date.now() - dueTime
另外,作为旁注,因为我不确定您希望它返回什么,所以当当前时间小于“event.due.getTime()+12小时”时,它将始终返回事件,即

这将是:

at                due     due+12hrs
|------------------|---------|
                    -->   <--
到期日+12小时
|------------------|---------|

-->不,不是现在+12,我需要活动的截止日期!+12…如果有那么简单,我不会问为什么不在查询本身中添加+12小时。this.model('Ev').find({at:{$lt:dueDate+()}).exec();我想你不明白我的问题,在每个我有到期日的对象中,我只需要显示那些(event.dueDate+12小时)timeWindow = 12 * 60 * 60000 this.model('Ev').find( {due:{$gt:(Date.now() - timeWindow)} }).exec();
at                due     due+12hrs
|------------------|---------|
                          <--
timeWindow = 12 * 60 * 60000
this.model('Ev').find(
    {due:{$gt:(Date.now() - timeWindow)},
    {due:{$lt:Date.now()}}
}).exec();
at                due     due+12hrs
|------------------|---------|
                    -->   <--