gpt4 book ai didi

gremlin - 即使没有边缘并且使用 select 进行投影时,我如何产生输出

转载 作者:行者123 更新时间:2023-12-01 01:35:13 25 4
gpt4 key购买 nike

有人可以帮我解决这个简单的问题吗...非常感谢...

我正在使用以下 gremlin 查询,它很好地为我提供了原始顶点 (v)(id-=12345)、它的边 (e) 和子顶点(id 属性)。但是,如果原始顶点“v”(id-12345)没有出边,则查询不返回任何内容。我仍然想要原始顶点 ('v') 的属性,即使它没有外向边和子节点。我该怎么做?

g.V().has('id', '12345').as('v').
outE().as('e').
inV().
as('child_v').
select('v', 'e', 'child_v').
by(valueMap()).by(id).by(id)

最佳答案

这里发生了一些事情,但您需要对遍历进行的主要更新是使用 project() 步骤而不是 select()。

select() 和 project() 步骤相似,因为它们都允许您格式化遍历结果,但是它们(至少)在一个重要方面有所不同。 select() steps 通过允许您访问先前遍历和标记的元素(通过 as)来发挥作用。 project() 步骤允许您获取当前遍历器并将其分支以向前操作输出。

在您的原始遍历中,当原始 v 没有传出边时,所有遍历器都在 outE() 步骤中被过滤掉。由于在 outE() 步骤之后没有其他遍历器,因此遍历的其余部分没有输入流,因此没有数据可返回。如果在原始 v 之后使用 project() 步骤,则可以返回原始遍历器以及返回边和事件顶点。在处理不存在出边的情况时,这确实会导致轻微的复杂化。 Gremlin 不处理空值,例如不存在出边,您需要使用 coalesce 语句为这些语句返回一些常量值。

这是这个遍历的功能版本:

g.V().hasId(3).
project('v', 'e', 'child_v').
by(valueMap()).
by(coalesce(outE().id(), constant(''))).
by(coalesce(out().id(), constant('')))

关于gremlin - 即使没有边缘并且使用 select 进行投影时,我如何产生输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61873356/

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