1

回到今天的文件我有一個集合,其中該集合中的所有文件都有一個日期戳,其中包括時間和日期。最有效的方法從集合

當使用聚合框架我怎麼說給我的價值觀在當下呢?以下只給我午夜的條目。

db.strategy.aggregate(
    [ 
     { 
      $match: { 
      "date": new Date() 
      } 
     }, 

    ] 
); 

回答

1

爲了得到這對今天的日期時間值的文件,你需要創建在start日期對象應在00:00:00.000(毫秒精度)保持當前日期時間時間日期查詢範圍,併爲今天的時間日期到23:59:59.999end日期變量。

例如:

// Create the start date which holds the beginning of today 
var todayStart = new Date(); 
todayStart.setHours(0,0,0,0); 

// Create the end date which holds the end of today 
var todayEnd = new Date(); 
todayEnd.setHours(23,59,59,999); 

// Create the date range query object 
var query = { 
    "date": { 
     $gte: todayStart, 
     $lte: todayEnd 
    } 
}; 

// using the find() method 
db.strategy.find(query); 

或者使用aggregate()方法

db.strategy.aggregate({ "$match": query }); 
+0

感謝您的回答我猜我被我的問題是檢查,我不能日期的方法應用到值的數據庫,然後得到一個簡單的日期1 = date2的比較。 –

+0

不用擔心:)這將是這將不適用於相等比較因爲您正在比較給定範圍內的值。 – chridam

+0

我想這是我的觀點。我想平等檢查thisDate =日期(),而不是thisDateTime today.setHours(0,0,0,0)和today.setHours(23,59,59,999)之間。要做到這一點,前者我需要能夠截斷存儲的日期以消除時間。 –

0

你應該得到的範圍內,即價值從今天的12AM時間戳到今天的23:59:59時間戳。

Var d = new Date(); var startDate = d.setHours(0,0,0); var endDate = d.setHours(23,59,59); db.strategy.aggregate( [ {$ 匹配:{ 「日期」:{$ GTE:的startDate,$ LTE:結束日期}} } ,

] 
); 
相關問題