Ruby on rails 3 查询MongoDB中的单个字段并插入到数组中

Ruby on rails 3 查询MongoDB中的单个字段并插入到数组中,ruby-on-rails-3,mongodb,mongoid,Ruby On Rails 3,Mongodb,Mongoid,我目前正在使用Mongoid与我的mongodb数据库通信。我有一个类似以下的问题: ClassDoc.only(:class_id).where(:recurrs => true) 我只对ID感兴趣,因为我在后续查询中排除了它们。但是,后续查询需要数组中的ID,因此我必须执行以下操作: first_result_ids = ClassDoc.only(:class_id).where(:recurrs => true).collect { |class| class.class_

我目前正在使用Mongoid与我的mongodb数据库通信。我有一个类似以下的问题:

ClassDoc.only(:class_id).where(:recurrs => true)
我只对ID感兴趣,因为我在后续查询中排除了它们。但是,后续查询需要数组中的ID,因此我必须执行以下操作:

first_result_ids = ClassDoc.only(:class_id).where(:recurrs => true).collect { |class| class.class_id }
这需要相当长的时间,因为AFAIK对每个结果进行“收集”循环。循环1000个结果可能需要10秒

有没有办法将ID直接拉入阵列?

试试这个

first_result_ids = ClassDoc.only(:class_id).where(:recurrs => true).map(&:class_id)
试试这个

first_result_ids = ClassDoc.only(:class_id).where(:recurrs => true).map(&:class_id)

感谢两者之间的尝试但无(或可忽略)时差。感谢两者之间的尝试但无(或可忽略)时差。如果您只需要class_id,我将尝试使用覆盖索引进行该查询,因此结果将仅来自索引。这将大大加快查询速度。请参阅:它可能与Mongoid中的.only()一起工作。如果您只需要class_id,我将尝试使用一个覆盖索引来进行该查询,因此结果将仅来自索引。这将大大加快查询速度。请参阅:它可能与mongoid中的.only()一起工作