![](/img/trans.png)
[英]How to set the value of a default attribute of a Mongoose schema based on a condition
[英]Set Mongoose query condition based on document’s attribute
我目前有一個Mongoose Event
文檔,其中包含startTime
, endTime
和duration
屬性。 我正在嘗試在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.