Gremlin- 使用合并时无法 select 2 个变量在一起

Gremlin- unable to select 2 variables together when using coalesce

我在 Neptune gdb 中使用 gremlin 查询语言,在使用 select:

时遇到了奇怪的行为

假设我的图表是单个节点

g.addV("test").property(id,"v1")

然后我尝试这个查询:

g.V("v1").as("a")
.V().has("test","name","non-existing-name")
.fold().coalesce(unfold(),V("v1")).as("b")
.select("b")

响应如预期的那样 v[v1]。 如果我在最后对 select("a") 做同样的事情:

g.V("v1").as("a")
.V().has("test","name","non-existing-name")
.fold().coalesce(unfold(),V("v1")).as("b")
.select("a")

我再次得到了相同的结果——正如预期的那样。

奇怪的行为是当我尝试在最后使用 select("a","b") 时:

g.V("v1").as("a")
.V().has("test","name","non-existing-name")
.fold().coalesce(unfold(),V("v1")).as("b")
.select("a","b")

出于某种原因,我得到了一个空洞的回应。知道为什么吗?

(我确实发现用 store 替换第一个 as 是可行的,但我不明白为什么)

第二次遍历时,我得到的结果与您的结果不太一样,我也不希望如此。这是我希望看到的:

gremlin> g.addV("test").property(id,"v1")
==>v[v1]
gremlin> g.V("v1").as("a").
......1>   V().has("test","name","non-existing-name").
......2>   fold().coalesce(unfold(),V("v1")).as("b").
......3>   select("b")
==>v[v1]
gremlin> g.V("v1").as("a").
......1>   V().has("test","name","non-existing-name").
......2>   fold().coalesce(unfold(),V("v1")).as("b").
......3>   select("a")
gremlin> g.V("v1").as("a").
......1>   V().has("test","name","non-existing-name").
......2>   fold().coalesce(unfold(),V("v1")).as("b").
......3>   select("a","b") 
gremlin>

注意最后两次遍历没有return结果。

当您 fold() 时,您丢失了“a”的路径历史记录,因此遍历无法再 select() 该步骤标签。通常,您不能引用回递减障碍步骤对面的步骤标签(如 fold())。减少障碍的其他示例是 sum()max()min() 等步骤 - 其中您有许多遍历器可以减少到一个。