2017-04-02 80 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}} 
)