我有Images
存儲在mongoDB中。它們按「created_at」排序。用mongoId獲取「previous」文檔
現在,當我打開一個單一的項目與Image.find("documentID")
我要訪問之前的文件和一個僅這一項後,基於created_at
順序。
對於這一點,我有兩個方法和image.rb
一個default_scope:
default_scope asc(:created_at)
def previous_image
self.class.last(:conditions => {:created_at.lt => created_at})
end
def next_image
self.class.first(:conditions => {:created_at.gt => created_at})
end
是否有MongoDB中原生的方式在當前文檔之前和之後訪問該文檔?
有沒有更好的方式來創建這樣的命名範圍與mongoID在rails中訪問上一個和下一個項目,也考慮到性能(一個圖像不查詢三次)?
編輯:在 「previous_image」 應最後使用,不是第一。這解決了「跳過」項目的錯誤。不過,關於實現這一點的正確方法的問題依然存在。
我實現了一個有點類似的解決方案,因爲你的代碼('{$ lt:mongoid}')給出了語法錯誤。 – berkes 2011-03-28 10:50:58
我來自PHP世界,盡力讓Ruby儘可能多地友好。 – jhavrda 2011-03-28 19:18:32