【问题标题】:Count both sides of a partition in ReQL在 Real 中计算分区的两侧
【发布时间】:2014-11-22 01:54:06
【问题描述】:

我有一个具有布尔属性的数据集,例如:

{
  name: 'Steven',
  isQualified: true
}

我想计算分区的两边。即有多少个文件是合格的或不合格的。使用单个 rethinkdb 查询执行此操作的最佳方法是什么?

这是一个带有 underscore.js 的示例,但它依赖于查询所有文档并在我的应用程序中处理它们:

results = _.partition(data, 'isQualified').map(_.iteratee('length'))

目前我有这个,但感觉效率低下,我假设/希望有更好的方法来做到这一点。

r.expr({
  'qualified': r.table('Candidate').filter({isQualified: true}).count(),
  'unqualified': r.table('Candidate').filter({isQualified: false}).count()
})

我怎样才能改进它并使其更加干燥?

【问题讨论】:

    标签: database rethinkdb reql


    【解决方案1】:

    在 isQualified 上创建索引

    r.table('Candidate').indexCreate("isQualified");
    

    然后用它来计数

    r.expr({
      'qualified': r.table('Candidate').getAll(true, {index: "isQualified"}).count()
      'unqualified': r.table('Candidate').getAll(false, {index: "isQualified"}).count(),
    })
    

    这样更快,因为服务器不必遍历所有文档,而只需遍历 B-tree。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-22
      • 2023-03-07
      • 2020-01-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 2020-11-22
      相关资源
      最近更新 更多