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()
等步骤 - 其中您有许多遍历器可以减少到一个。
我在 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()
等步骤 - 其中您有许多遍历器可以减少到一个。