【问题标题】:What's the best way to find the most frequently occurring value in MongoDB?在 MongoDB 中找到最常出现的值的最佳方法是什么?
【发布时间】:2011-09-13 21:14:43
【问题描述】:

我正在寻找这种 SQL 查询的等价物。

SELECT field, count(*) as counter from table order by counter DESC

实现这一目标的最佳方法是什么?

谢谢

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    使用 Map-Reduce。通过发出键和值 1 来映射每个文档,然后使用简单的 reduce 操作聚合它们。见http://www.mongodb.org/display/DOCS/MapReduce

    【讨论】:

      【解决方案2】:

      我会通过分别跟踪各自的计数来处理聚合查询,即在它们自己的集合中。这样,您可以简单地查询“最常出现”的集合。缺点:每当数据发生变化时,您都需要执行另一次写入。

      当然,您也可以使用 Map/Reduce 不时更新该集合。这在一定程度上取决于信息的准确性以及更改频率。

      但是,请确保不要经常调用 Map/Reduce 操作:它不打算以交互方式使用(即不是在每个页面视图中),而是几乎不用于每次更新计数的离线进程中小时左右。因此,如果您的计数变化很快,请使用计数器集合。

      【讨论】:

      • 我只需要运行一次。我不关心性能,我只是想要一个答案。
      • 那您为什么不简单地获取不同的值并查询每个值的计数?这不是很快,但很容易。
      • 也很好奇最好的方法。
      猜你喜欢
      • 2020-10-01
      • 2011-08-18
      • 2018-08-11
      • 2020-01-28
      • 2012-10-21
      • 2019-09-05
      • 2017-09-18
      • 2011-09-23
      • 1970-01-01
      相关资源
      最近更新 更多