gpt4 book ai didi

gremlin - 在 Gremlin 中查找子树差异

转载 作者:行者123 更新时间:2023-12-04 08:00:40 25 4
gpt4 key购买 nike

我在 gremlify 上描述了这里的图表.所以我有四种类型的顶点:内容、用户、组和视频。 Content 和 Group 作为容器,User 和 Video 是叶子。此外,我在组和用户、组和内容、组和视频之间可能存在边缘。用户也可以直接分配给视频和内容。视频可以添加到内容顶点。当内容从组中删除时,我必须计算树的差异。我创建了一个从 Content 遍历的查询,聚合所有直接分配的用户,然后从组成员集中减去这些用户:

g.V().has('ContentId', 1).in('Assigned').
choose(label()).
option('User', __.aggregate('DirectAssign')).
option('Group', __.out('Added').where(without('DirectAssign')).
as('ToDrop'))
.select('ToDrop')
但是,也有一些缺点:
  • 我怀疑从规模和性能的角度来看,查询是否是最佳的,因为在一个组中有 10 万个用户 - 它几乎消耗了我所有的 RU
  • 我需要单独计算每个用户的视频访问权限(没什么大不了的)
  • 我无法在添加的 ORM 框架中编写此查询,如 aggregate在那里创建一个新范围,并且不可能在第二个选项步骤中引用该聚合集合。

  • 所以我的问题是:是否可以在没有 choose 的情况下重写此查询(保持单一)步?

    最佳答案

    如果我理解您的用例,您可以通过遍历回内容来找到这些用户。因此你可以避免 aggregatechoose脚步。

    g.V().hasLabel('Content').
    as('content').
    in('Assigned').hasLabel('Group').out('Added').
    not(where(out('Assigned').
    as('content')))
    例如: https://gremlify.com/ozhf4t0xv4j

    关于gremlin - 在 Gremlin 中查找子树差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66491978/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com