返回具有到期日的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
|------------------|---------|
--> <--