我有两个参数的事件对象: '在'当他们开始时, '由于'当他们结束时
这是数组的结构非常简单:
{
"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小时的那些。 意思是如果现在的事件到期,它将在接下来的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
}
});
我有我想要的结果,如何在没有涉及javascript的查询中这样做?
答案 0 :(得分:3)
如果&#34; Date.now() - event.due.getTime()&lt; duetime参数&#34;返回正确的输出,可以按如下方式表达:
Date.now() - event.due.getTime() < dueTime
=>
Date.now() < dueTime + event.due.getTime()
=>
Date.now() - dueTime < event.due.getTime()
=>
event.due.getTime() > Date.now() - dueTime
,最后一行与
相同timeWindow = 12 * 60 * 60000
this.model('Ev').find(
{due:{$gt:(Date.now() - timeWindow)}
}).exec();
另外作为旁注,因为我不确定你期望它返回什么,它会在当前时间小于&#34; event.due.getTime()+ 12hrs&#时返回事件。 34;,即
at due due+12hrs
|------------------|---------|
<--
但是,如果你希望它返回到期但尚未到期的事件&#34;到期+ 12小时&#34;然后只需添加另一个查询参数:
timeWindow = 12 * 60 * 60000
this.model('Ev').find(
{due:{$gt:(Date.now() - timeWindow)},
{due:{$lt:Date.now()}}
}).exec();
这将是:
at due due+12hrs
|------------------|---------|
--> <--
答案 1 :(得分:-2)
3 * 24 * 60 * 60000 = 3天
所以
12 * 60 * 60000 = 12小时
dueDate = date.Now()+(12 * 60 * 60000);
this.model('Ev').find(
{at:{$lt:dueDate}
}).exec();
我个人没有测试过代码。这样做,让我知道它是否有效:)