2013-07-17 15 views

回答

3

Mongo沒有像SQL NOW()這樣的符號日期,您可以在客戶端上使用它並在服務器上進行評估。

解決您的問題的最佳方法是評估計算客戶端上的日期。在您的具體情況中,由於記錄不是在將來創建的,因此您可能只需在客戶端計算「現在減去7天」,然後在查詢中輸入該日期。

排序順便說一句,如果你需要從服務器的確切日期,你可以這樣取,

db.eval(function() { return new Date() }); 

使用最多的車手,你應該能夠完成,使用$eval命令。

最後,您可以完全在服務器上使用where()表達式完成此操作。但是,我不推薦這種方法。這樣的查詢不能利用索引,因此必須反序列化集合中的每個記錄。除非你的收藏很小,否則它們非常慢。但是,如果您想採用此方法,則可以在用於where()表達式的JavaScript中使用new Date()

3

嘗試在蒙戈控制檯返回在最近7天內創建的記錄是這樣的(假設CREATED_DATE是插入日期):

> startDate = new Date() // Current date 
> startDate.setDate(startDate.getDate()-7) // Subtract 7 days 
> startDate.setHours(0) // Set the hour, minute and second components to 0 
> startDate.setMinutes(0) 
> startDate.setSeconds(0) 
> db.mycollection.find({created_date:{$gte: startDate}}) 

相當的幾行代碼,但至少你贏了」不得不做日期算術。

相關問題