簡體   English   中英

根據文檔屬性設置貓鼬查詢條件

[英]Set Mongoose query condition based on document’s attribute

我目前有一個Mongoose Event文檔,其中包含startTimeendTimeduration屬性。 我正在嘗試在node.js文件中執行查詢,以獲取所有事件,其中事件的開始時間在當前時間戳之前,事件的結束時間在當前時間戳加上事件的持續時間之后。 因此,我的查詢取決於能夠執行使用查詢事件中的屬性( duration )的計算。 與此類似:

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

但是,我不確定應該寫什么而不是event.duration ,因為此時該事件尚未被拉出,而是希望以某種方式將數據庫中每個候選事件的持續時間合並到查詢中。 請讓我知道這是否可行!

您不能直接比較$ 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}}
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM