计算最常见的数组元素

时间:2016-06-29 07:33:24

标签: rethinkdb

我有一堆包含标签数组的文档:

{ tags: ["tag1", "tag2", "tag3"] }

我想要做的是计算所有文档中使用的前10个最常见的标记。经过一些反复试验后,我提出了以下解决方案:

r.db("database").table("table").concatMap(function(doc) {
  return doc("tags")
}).coerceTo("array").group(function(entry) {
  return entry
}).count().ungroup().orderBy(r.desc("reduction").limit(10).map(function(doc) {
  return doc("group")
})

然而,我感觉" (凭借我对查询优化的有限知识),这是一种相当麻烦的方法。任何人都可以通过正确使用索引来建议更有效的方法吗?

1 个答案:

答案 0 :(得分:0)

除了coerceTo('array')之外,该查询对我来说很好,我认为这是不必要的,哪些可能会影响性能。你也可以缩短它:

r.table('table').group('tags', {multi: true}).count().ungroup().orderBy('reduction').slice(-10)('group')