![](/img/trans.png)
[英]Mongoose query returns nothing, while MongoDB query returns expected results
[英]Mongoose Query Builder .or not returning expected results
語境
我正在構建一個查詢,用戶可以在其中輸入一系列日期來搜索“播放器”文檔。 查詢應返回開始和結束日期與查詢日期重疊的所有玩家。 我通過使用 OR 條件來做到這一點,其中玩家的結束日期在查詢的開始日期之后,或者玩家的開始日期在查詢的結束日期之前。 查詢中的兩個日期都是可選的,允許用戶僅指定結束日期或開始日期,或者兩者都不返回所有相關文檔。
問題
當僅指定兩個查詢日期之一時,該查詢有效(請參見下面的屏幕截圖)。 但是,如果指定了兩個日期(功能上忽略兩個查詢參數),它將返回所有文檔。
代碼
let query = Player.find({'casino': user.casino});
let queryArray = [];
if(req.body.startDate) {
queryArray.push({playerEndDtm: {$gt: moment(req.body.startDate).toDate()}});
}
if(req.body.endDate) {
queryArray.push({playerStartDtm: {$lt: moment(req.body.endDate).endOf('day').toDate()}});
}
if(queryArray.length > 0) {
query.or(queryArray);
}
誰能幫我確定我做錯了什么? 謝謝!
if(req.body.endDate) {
queryArray.push({playerStartDtm: {$lt:
moment(req.body.endDate).endOf('day').toDate()}});
}
在上面的查詢中,您只是檢查少於結束日期。 您需要檢查日期之間的范圍:
({ playerStartDtm : { $gt : expression, $lt : expression}})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.