1

假设我有一张包含以下文件的表格:

{
  "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'})

但是数据浏览器似乎挂起,如您所见,仍在处理它......

4

1 回答 1

0

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

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

于 2015-12-20T06:22:08.583 回答