【问题标题】:Rethinkdb multiple level groupingRethinkdb 多级分组
【发布时间】:2015-12-19 10:20:06
【问题描述】:

假设我有一个表格,其中包含以下文档:

{
  "country": 1,
  "merchant": 2
  "product": 123,
  ...
}

是否可以将所有文档分组为最终的 json 结构,例如:

[
  {
    <country_id>: {
      <merchant_id>: {
        <product_id>: <# docs with this product id/merchant_id/country_id>,
        ... (other product_id and so on)
      },
      ... (other merchant_id_id and so on)
  },
  ... (other country_id and so on)
]

如果是的话,最好和最有效的方法是什么? 我有超过一百万个这样的文档,在 4 个带有强大服务器的分片上(每个 22 Gb 缓存)

我已经尝试过了(目前在数据资源管理器中,在 JS 中):

r.db('foo')
  .table('bar')
  .indexCreate('test1', function(d){
    return [d('country'), d('merchant'), d('product')]
  })

然后

r.db('foo')
  .table('bar')
  .group({index: 'test1'})

但是数据浏览器似乎挂了,你可以看到仍在处理它...

【问题讨论】:

    标签: rethinkdb rethinkdb-python rethinkdb-javascript


    【解决方案1】:

    .group({index: 'test1'}).count() 会做一些与你想要的非常相似的事情,除了它不会产生嵌套的文档结构。要生成嵌套文档结构,最简单的方法可能是 ungroup,然后映射未分组的值以生成所需形式的对象,然后 merge 所有这些对象。

    group 查询整个表的问题在于它们不会流式传输,您需要遍历整个表才能返回最终结果。数据浏览器适用于小型查询,我认为如果您的查询需要超过 5 分钟才能返回,它会超时,所以如果您正在遍历一个巨大的表,那么从其中一个客户端运行该查询可能会更好.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多