我有问题。我需要在Rails中使用mongoid从我的mongodb获取文件。我有一系列ID,如[" 54397dea477269151d000000"," 543ad4bc477269c09f000000"," 543ad4bc474269c09f000000"]。如果我找到像:
这样的文档Item.find(ids)
它返回一个有序的对象数组。但我需要的对象相当于ids数组。有没有机会通过一个选择请求到达数据库?
答案 0 :(得分:2)
最简单的方法是在MongoDB之外进行:
ids = [ ... ]
items = Item.find(ids).sort_by { |i| ids.index(i.id) }
如果您的ids
是字符串而不是对象ID,则您必须自己处理类型转换:
ids = %w[54397dea477269151d000000 543ad4bc477269c09f000000 543ad4bc474269c09f000000]
items = Item.find(ids).sort_by { |i| ids.index(i.id.to_s) }
如果你做了很多这样的事情,那么添加你自己的类方法:
def self.find_in_order(ids)
ids = ids.map(&:to_s) # Or force them to be object IDs instances and leave out the to_s below...
find(ids).sort_by { |i| ids.index(i.id.to_s) }
end
使用MongoDB时,这种“在Ruby中手工完成”的事情很常见。