簡體   English   中英

Mongo DB:如何同時按ID和日期查詢

[英]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.

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