我在MongoDB中有一個用戶集合,並使用lift/scala來執行User.findAll操作並檢索在特定時間範圍內創建的用戶數。我利用objectId的getTime方法,但是我需要應用幾個方法並乘以獲取存儲在每個文檔中的字符串,將其轉換回objectID並從毫秒轉換爲秒。這是在過去一小時內創建的用戶的代碼行: val users = User.findAll.filter {u:User =>((((ObjectId.massageToObjectId(u._id)).getTime)/ 1000)< = 3600)}。長度使用scala和lift,如何對mongodb集合中的文檔進行高效的過濾操作?
我需要找到一種方法在數據庫中執行此操作,而不是將所有數據存入內存,然後使用該函數對其進行過濾。在過去,我以這種方式使用queryBuilder來實現相同的目標,但在這種情況下,我沒有其他計算方法適用於文檔中的值: val qry1 = QueryBuilder.start(「numberOfFriends」)。greaterThan (0)。獲得 VAR萬普拉斯:列表[用戶] = {User.findAll} qry1
我也是知道的這樣的方法: User.findAll(( 「姓名」 - > 「喬」)〜( 「age」 - > 27))
而且我知道findall可以接受許多其他事情,比如稱爲sort的DBObject。但我不熟悉如何使用它。
如果有人知道如何操縱這些方法之一或可以建議另一種方法,將不勝感激。
感謝, -Ronnie