Select 不会在 gremlin 查询中迭代。请求帮助

问题描述 投票:0回答:1
我尝试了多种方式对该查询进行切片和切块,以便允许数据库进行大部分批量处理(与在客户端相比)。为此,我计划注入一张地图,我们可以从下面示例中的两个开始。不幸的是,使用 hasLabel() 和其他方法合并或添加合并逻辑会导致列表的实际迭代不会发生。下面的例子:

下面的查询是我想要开始工作的。不幸的是,它似乎返回相同的 ID。这告诉我一旦启动它就不会迭代。

g.inject( [ [stock_height:111, sh_id:"sh123", inputs: [house: "inputhouse123ia"], outputs: [[house: "outputhouse123oa", group_id: "gid-123a"],[house: "outputhouse123ob", group_id: "gid-123b"]]], [stock_height:111, sh_id:"sh1234", inputs: [house: "inputhouse1234ia"], outputs: [[house: "outputhouse1234oa", group_id: "gid-1234a"],[house: "outputhouse1234ob", group_id: "gid-1234b"]]] ]). unfold().as('sh'). select('outputs'). unfold().as('output').select('group_id').as('gid'). mergeV([(label): 'Peoplegroup']).property('group_id', select('gid')).id()
输出:
[ 17846400, 17846400, 17846400, 17846400 ]

在 addV() 或 mergeV() 之外使用 select 似乎工作正常。

g.inject( [ [stock_height:111, sh_id:"sh123", inputs: [house: "inputhouse123ia"], outputs: [[house: "outputhouse123oa", group_id: "gid-123a"],[house: "outputhouse123ob", group_id: "gid-123b"]]], [stock_height:111, sh_id:"sh1234", inputs: [house: "inputhouse1234ia"], outputs: [[house: "outputhouse1234oa", group_id: "gid-1234a"],[house: "outputhouse1234ob", group_id: "gid-1234b"]]] ]). unfold().as('sh'). select('outputs'). unfold().as('output').select('group_id').as('gid'). select('gid')
输出:[“gid-123a”,“gid-123b”,“gid-1234a”,“gid-1234b”]

有什么想法吗?我失去了新的想法,任何帮助将不胜感激。

我希望向图中添加 4 个新的 gid 顶点,或者返回已经存在的 id。为了测试目的,可以简化地图。

gremlin
1个回答
0
投票
因为你的

mergeV

 仅在标签上匹配,所以第一次执行时,不存在。所以它创建了一个 
Peoplegroup
 节点。之后,其他每个
mergeV
都找到第一个。您会注意到,到最后该属性实际上设置为 
gid-1234b
(最后一个),因为它已匹配每个属性并替换了该属性。为了获得不同的行为,你需要引入一些更独特的东西来匹配,或者只是注入整个地图而不使用
property

© www.soinside.com 2019 - 2024. All rights reserved.