ruby-on-rails - Mongoid:通过id数组查找

标签 ruby-on-rails ruby mongodb mongoid

我已经通过 MapReduce 获取了一些 ID。我已经按照一些标准对这些 ID 进行了排序,现在我需要按照这个特定的顺序获取这些对象:

MyModel.find(ids)

对吧?但它返回的对象不在存储 id 的顺序中。看起来这和

MyModel.where(:_id.in => ids)

它不会以与存储 ID 相同的顺序返回获取的对象。

现在我可以做到了

ids.map{|id| MyModel.find(id)}

这将完成这项工作,但它会多次敲击数据库。

最佳答案

正在研究类似的问题并找到了更简洁的解决方案:

objs = MyModel.find(ids).sort_by{|m| ids.index(m.id) }

基本上只是使用排序 block 来获取元素的索引。

关于ruby-on-rails - Mongoid:通过id数组查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7533104/

相关文章:

ruby-on-rails - 更改主要关键问题 Rails 4.0

ruby-on-rails - Rails - 为什么是 "source ' https ://rubygems. org' "giving -bash No such file or directory"

ruby - 在 Ruby 中装饰一个方法

mongodb - MongoDB管道中的多个顶级聚合查询

php - 在控制台上执行php脚本

ruby-on-rails - rails 表单动态添加字段

ruby-on-rails - 缺少带有 Devise 自定义注册 Controller 的模板

arrays - 在 Ruby 中从整数除法生成数组的正确方法

ruby - 在 Ruby 中模拟构造函数

node.js - MongoDB - 无法连接到 127.0.0.1 :27017, 原因:errno:111 连接被拒绝