2012-07-31 60 views
1

想這是你的模型:mongoose.js:白天查找數據項

var EventSchema = new Schema({ 
    title: String, 
    startDate: Date, 
    endDate: Date 
}); 

我想在一個日期扔(簡單像'24 -12-2012' ),然後每一個檢索在那一天開始或進行的事件。

你是怎麼做的?

+0

查看該主題的食譜文章:HTTP: //cookbook.mongodb.org/patterns/date_range/ – JohnnyHK 2012-07-31 13:53:55

回答

4

肯定的:

首先閱讀了關於蒙戈查詢語法的日期,這裏是一個如何對日期範圍:http://cookbook.mongodb.org/patterns/date_range/

然後是蒙戈語法翻譯成貓鼬。

Event.where('startDate').lte(yourDate).exec(callback); //should do the trick 

現在,您只需要將日期字符串解析爲javascript日期。有一些很酷的庫來做到這一點,我相信moment.js將不會有該日期字符串的問題。

哦,我忘了魔術的最後一點:你把查詢到連接到您的事件模型static method,所以從現在開始,你可以叫

Event.earlierThan(yourDate, callback); //Where your custom static is called 'earlierThan'. 
+0

感謝您的見解。就我所瞭解的代碼而言,您將檢索在給定日期之前開始的每個事件。因此,如果我想在單日獲得所有東西,我應該做一個.gte(「24-12-2012 00:00」)。lte(「24-12-2012 23:59」)?另外那些在前一天開始但在當天結束的事件呢? – Sven 2012-07-31 14:06:49

+0

嘿。正確,是的,對於最後一種情況:只需使用'... where('endDate).lte(yourDate)'。 :) – rdrey 2012-07-31 14:19:26

+0

對上面的評論有一個修正:'lte'和'gte'可能不適用於你的''24-12-2012 00:00''等字符串,請確保將它們解析爲Javascript日期! – rdrey 2012-07-31 14:22:23