2017-04-02 85 views
0

我目前有一个猫鼬Event文件,其中有startTime,endTimeduration属性。我试图在一个node.js文件中执行查询,该文件捕获所有事件的开始时间在当前时间戳之前的事件,并且事件的结束时间在当前时间戳加上事件的持续时间之后。因此,我的查询取决于能够执行计算,它使用正在查询的事件的属性(duration)。沿此线的东西:根据文档属性设置猫鼬查询条件

const eventQuery = Event.find(query); 
    eventQuery.where('startTime').lte(currentTimeStamp); 
    eventQuery.where('endTime').gte(currentTimeStamp + event.duration); 

不过,我不知道我应该写的,而不是event.duration,由于事件尚未在这一点上拉,而我想将它们每个候选事件的持续时间在DB中以某种方式进入查询。请让我知道这是否可能以某种方式!

+0

plz接受答案,如果它帮助 – sidgate

回答

0

您不能直接比较$ match中的两个字段。相反,您可以使用以下查询来获得理想的结果

db.events.aggregate(
{$project: {startTime: 1, endTime: 1,matches: 
    {$cond: [{$and:[ 
      {$lt: ['$startTime',new Date()]}, 
      {$gt: ['$endTime', {$add: [new Date(), '$duration']}]} 
    ]},1,0]}}}, 
{$match: {matches:1}} 
)