Mongoid:按数组大小分组,并计算每个组

时间:2013-10-21 21:48:33

标签: ruby-on-rails mongodb mongoid

我有一个集合,其文档每个都有一个数组。 我想写一个查询来分析这个数组大小的分布。

结果我期待的是哈希数组{size_of_array => count_of_document}

[
  {0 => 101},
  {1 => 79},
  {2 => 46},
  {3 => 19},
  {4 => 8},
  {5 => 2},
  {6 => 1}
]

我如何在纯Mongo和Mongoid中写这个?

提前谢谢!

修改

发现了一个非常重复的问题: Use mongodb aggregation framework to group by length of array

这篇文章建议使用unwind和group来计算数组的长度。

1 个答案:

答案 0 :(得分:3)

MongoDB的开发版本2.5.3为聚合管道引入了$ size运算符。如果您使用该版本,可以尝试:

db.collection.aggregate( [ { $group: { _id: { $size: "$myArray" }, count: { $sum: 1 } } } ] )

如前所述,$ size运算符目前在2.5.3版本中可用,用于开发/测试目的。

我担心我对Mongoid并不熟悉。

希望这有帮助。