[英]Mongo DB: How do I query by both Id and date
我正在嘗試使用Mongoose在mongoDb數據庫上通過2個參數進行查詢。 我需要查詢文檔是由誰創建的,還有一個帶有事件的名為事件的子文檔。 我想帶回某個時間范圍內的所有文檔。
我的查詢看起來像這樣。
var earliest = new Date(2018,0,3);
var latest = new Date(2018,0,4);
Goal.find({createdBy:userId,'events.date':{$gte: earliest, $lte: latest}})
.exec(function(err,doc)){ //do stuff}
以下文檔是返回的文檔。 我將數據庫中的所有內容取回,並且不考慮我的日期范圍查詢。 我是Mongodb的新手,我不知道自己做錯了什么。
[
{
_id: "5a4dac123f37dd3818950493",
goalName: "My First Goal",
createdBy: "5a4dab8c3f37dd3818950492",
__v: 0,
events:
[
{
_id: "5a4dac123f37dd3818950494",
eventText: "Test Goal",
eventType: "multiDay",
date: "2018-01-03T00:00:00.000Z",
eventLength: 7,
completed: false
},
{
_id: "5a4dac123f37dd3818950495",
eventText: "Test Goal",
eventType: "multiDay",
date: "2018-01-04T00:00:00.000Z",
eventLength: 7,
completed: false
},
{
_id: "5a4dac123f37dd3818950496",
eventText: "Test Goal",
eventType: "multiDay",
date: "2018-01-05T00:00:00.000Z",
eventLength: 7,
completed: false
}
],
startDate: "2018-01-04T00:00:00.000Z",
createdOn: "2018-01-04T00:00:00.000Z"
}
]
匹配的文檔和匹配的“數組元素”之間有區別。 您的文檔已經包含整個數組,甚至包括與數組過濾條件不匹配的值。 但是,由於您的文檔匹配條件匹配,因此將返回整個文檔(包括所有數組條目)。
如果只需要匹配的“元素”,請改用.aggregate()。 在Mongodb上找到在子數組中查找如何使用聚合來執行此任務的示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.