gpt4 book ai didi

ruby-on-rails - 使用 mongoId 获取 "previous"文档

转载 作者:可可西里 更新时间:2023-11-01 09:56:32 24 4
gpt4 key购买 nike

我将 Images 存储在 mongoDB 中。它们按“created_at”排序。

现在,当我使用 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 是否有一种本地方式来访问当前文档之前和之后的文档?

是否有更好的方法来在 Rails 中使用 mongoID 创建此类命名范围以访问上一个和下一个项目,同时考虑性能(不为一张图像查询三次)?

编辑:“previous_image”应该放在最后,而不是第一个。这解决了“跳过”项目的错误。不过,关于实现这一目标的正确方法的问题仍然存在。

最佳答案

你可以尝试这样的事情:

def previous_image mongoid
self.class.find(:conditions => {:_id => {$lt: mongoid}}).sort({:_id=>-1}).limit(1)
end

def next_image mongoid
self.class.find(:conditions => {:_id => {$gt: mongoid}}).sort({:_id=>1}).limit(1)
end

这种方法利用了 Mongo id 的顺序性。

关于ruby-on-rails - 使用 mongoId 获取 "previous"文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5433868/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com