首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ObjectSet后聚合SearchAround

如何在ObjectSet后聚合SearchAround
EN

Stack Overflow用户
提问于 2022-04-19 14:52:26
回答 1查看 125关注 0票数 2

我有两个留声机对象,每一个都有数以百万行的行,我用搜索方法将它们链接起来。

在下面的示例中,我根据起飞代码筛选到航班的一个对象集,然后搜索那些航班上的乘客,然后根据旅客对象的属性再次进行筛选。

代码语言:javascript
复制
const passengersDepartingFromAirport = Objects.search()
    .flights()
    .filter(flight => flight.departureAirportCode.exactMatch(airportCode))
    .searchAroundPassengers()
    .filter(passenger => passenger.passengerAttribute.exactMatch(value));

上述代码的结果是:

代码语言:javascript
复制
LOG [2022-04-19T14:25:58.182Z] { osp: {},
  objectSet: 
   { objectSetProvider: '[Circular]',
     objectSet: { type: 'FILTERED', filter: [Object], objectSet: [Object] } },
  objectTypeIds: [ 'passengers' ],
  emptyOrderByStep: 
   { objectSet: '[Circular]',
     orderableProperties: 
      { attributeA: [Object],
        attributeB: [Object],
        attributeB: [Object],
        ...

现在,当我试图使用the ()或takeAsync()或使用groupBy()聚合结果时,我收到以下错误:

代码语言:javascript
复制
RemoteError: INVALID_ARGUMENT ObjectSet:ObjectSetTooLargeForSearchAround with instance ID xxx.
Error Parameters: {
  "RemoteError.type": "STATUS",
  "objectSetSize": "2160870",
  "maxAllowedSize": "100000",
  "relationSide": "TARGET",
  "relationId": "flights-passengers"
}
SafeError: RemoteError: INVALID_ARGUMENT ObjectSet:ObjectSetTooLargeForSearchAround with instance ID xxx

有什么方法可以聚合或减少上述ObjectSet的结果?

EN

回答 1

Stack Overflow用户

发布于 2022-04-19 15:45:24

当前的对象存储基础结构对搜索100,000对象的“左侧”或“启动对象集”的大小有限制。

您可以定义和对象集,它使用搜索,这是您在尝试任何进一步操作之前执行函数时所看到的结果。

使用take()groupBy“强制”解析对象集定义。也就是说,您不再需要指向对象的指针,但是您需要实际地从每个单独的对象中物化一些数据来执行该操作。

在这个物化步骤中,限制开始发挥作用--对象集被解析,如果搜索步骤中的对象集大于100000个对象,那么请求将与上面的消息一起失败。

对象存储v2的工作还在进行中,它最终将支持更大的搜索请求,但目前有必要创建一个查询模式,该模式在进行搜索之前生成的对象少于10万个。

在某些情况下,可以创建一个“中间”对象类型,它表示数据中不同级别的粒度,或者两个反转搜索的方向,以找到解决这些限制的方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71927006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档