0

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

我期待的结果是一个哈希数组 {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 来计算数组的长度。

4

1 回答 1

4

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

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

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

恐怕我对 Mongoid 不熟悉。

希望这可以帮助。

于 2013-10-21T22:31:53.270 回答