我很難找到casbah。我試圖從date1和date2之間撤回MongoDB中的所有文檔。這裏有一個例子設置蒙戈文檔的:由joda發現mongodb條目DateTime範圍scala/casbah
{ "_id" : NumberLong("1285248838000"), "openTime" : "Thu Sep 23 2010 06:33:58 GMT-0700 (PDT)", "closeTime" : "Thu Sep 23 2010 06:36:15 GMT-0700 (PDT)", "timeInTrade" : "00:02:17", "direction" : "Long", "size" : 1, "outcome" : "Loss" }
{ "_id" : NumberLong("1285595711000"), "openTime" : "Mon Sep 27 2010 06:55:11 GMT-0700 (PDT)", "closeTime" : "Mon Sep 27 2010 06:57:37 GMT-0700 (PDT)", "timeInTrade" : "00:02:26", "direction" : "Short", "size" : 1, "outcome" : "Win"}
{ "_id" : NumberLong("1285594773000"), "openTime" : "Mon Sep 27 2010 06:39:33 GMT-0700 (PDT)", "closeTime" : "Mon Sep 27 2010 06:41:47 GMT-0700 (PDT)", "timeInTrade" : "00:02:14", "direction" : "Short", "size" : 1, "outcome" : "Win" }
{ "_id" : NumberLong("1286289026000"), "openTime" : "Tue Oct 05 2010 07:30:26 GMT-0700 (PDT)", "closeTime" : "Tue Oct 05 2010 07:36:23 GMT-0700 (PDT)", "timeInTrade" : "00:05:57", "direction" : "Short", "size" : 2, "outcome" : "Loss"}
所以,讓我們說,我想給拉了回來,從九月27.我將如何去這樣做的文件?
在卡斯巴文檔,它看起來像我可以構建這樣一個建設者:
val dt = new DateTime("2010-09-27T00:00:00.000-08:00")
val bldr = MongoDBObject.newBuilder
bldr += "openTime" $gte dt $lt dt.plusDays(1)
val result = coll.find(bldr.result)
在我的IDE(Netbeans的),這將不能編譯,因爲「$ GTE是不是java.lang中的一員。串」。我用其他記載的方法構建了我的過濾器,結果類似。
我懷疑我會遇到的下一個問題是它不知道如何比較日期,因爲它們存儲爲joda DateTimes,所以如果任何人有這些問題的經驗,我將不勝感激一些指導。
感謝, 約翰
後續:
我已經得到了部分解決方案,但僅僅是因爲我用的是毫秒爲_id。下面是一些代碼,對於這種情況下的工作原理:
val begin = dt.getMillis
val end = dt.plusDays(1).getMillis
val json = "{ '_id' : { '$gte' : " + begin + " , '$lt' : " + end + "}}"
val dbObject = JSON.parse(json).asInstanceOf[DBObject];
for (x <- coll.find(dbObject)) println(x)
我仍然有興趣學習有關的日期時間,而不是龍米利斯有效的解決方案......
謝謝,這很有幫助。 – jxstanford 2010-11-29 22:40:27