Ruby Mongodb / Mongoid合并分组记录

时间:2017-06-07 19:41:07

标签: ruby-on-rails ruby mongodb mongoid aggregation-framework

这是我在Mongodb中的表/集合“记录” enter image description here

我需要获取这个数据数组,按字段_1的唯一值和字段中的合并值(field_2,field_3,field_4)进行分组

[
  {field_1 => value_1, field_2 => value_2, field_3 => value_3, field_4 = value_4},
  {field_1 => value_N, field_2 => value_2, field_3 => value_3, field_4 = value_4}
]

我正在使用Ruby on Rails和mongoid,使用mongoid我可以做这样的事情

uniq_filed_values = db.records.distinct(:field_1)
merged_results = []
uniq_field_values.each do |value|
   merged_result = db.records.where("field_1" => value).map{|v| v.attributes}.inject(&:merge)
   merged_results << merged_result
end 

我想知道是否有任何方法可以在数据库/ Mongodb或mongoid中做同样的事情而不使用这么多ruby。我正在寻找Mongodb map / reduce或aggregation的可能解决方案?或者也许我的样品有更好的解决方案?

请注意 - 此表/集合中有超过1 000 000条记录。

感谢您的帮助!

0 个答案:

没有答案