2016-01-15 97 views
0

我正在通過格式爲MM-DD-YYYY這是一個日期範圍的兩個日期。我需要查詢該範圍內的所有記錄幷包含指定的字段。我沒有運氣。在蒙戈記錄的獲取特定日期範圍內的指定屬性的所有記錄

部分:

{ 
    "_id": "some ID", 
    "date": { 
     "$date": "2015-06-26T13:02:12.121Z" 
    }, 

查詢:

var Start = '09-07-2015' 

var End = '09-14-2015' 

如果我做的:

var query = Order.find({ 
     date : { 
      $lt : End, 
      $gt : Start 
     } 
    }); 

我得到的一週範圍內的全部文件按預期。但是,我想指定要返回的字段而不是完整的文檔。所以我試過使用分組和項目來指定這些字段:

var query = Order.aggregate(
     { 
      $match : 
      { 
       date: { 
        $gte: start, 
        $lt: end 
       } 
      }, 
      $group: 
      { 
       cust_ID: '$request.headers.customer_id', 
       wholesaler_ID: '$request.headers.wholesalerID' 
      } 
     } 
    ); 

同樣的:我也試過用項目來得到我想要的結果。我想也許它不會匹配像09-07-2015這樣的日期字符串,所以我直接包含ISO日期。仍然沒有運氣...查詢回來未定義或空:

var query = Order.aggregate(
     { 
      $project: 
      { 
       date: 'date', 
       cust_ID: '$request.headers.custID', 
       wholesaler_ID: '$request.headers.wholesalerID' 
      } 
     }, 
     { 
      $match : 
      { 
       date: { 
        $gte: "2014-12-09T21:02:56.872Z", 
        $lt: "2015-12-09T21:02:56.872Z" 
       } 
      } 
     } 
    ); 

回答

0
var query = Order.find({ 
    date : { 
     $lt : End, 
     $gt : Start 
    }}, {cust_ID:1, wholeseller_ID:1} 
); 

這將工作。

我只是測試這一點使用Robomongo

db.getCollection('offerdb').find({time_posted:{$gt: '2015-10-21T21:40:04+05:30', $lte:'2015-12-14T05:53:14+05:30'}},{_id:1, merchant_id:1}) 

作品對我來說就像魅力。

+0

謝謝。這似乎並不奏效。我不認爲語法是正確的 – Growler

+0

我已經發布了我測試過的shell代碼,請檢查它。也許我沒有正確編輯代碼。 –

+0

我編輯了代碼,支架未正確排序。現在運行它。 –