Gremlin查询以获取一个顶点及其子顶点,即使它没有';我没有孩子

Gremlin查询以获取一个顶点及其子顶点,即使它没有';我没有孩子,gremlin,Gremlin,假设我有(链接到Gremlify): 我需要一个查询来获取一个顶点及其所有子顶点(达到一定深度)。我们已经有了一个似乎有效的方法: g.V("4840") .repeat(outE().inV().simplePath()) .times(5) .emit() .path() .by(valueMap(true)) 结果是: [ [ { "id": 4840, "label": &quo

假设我有(链接到Gremlify):

我需要一个查询来获取一个顶点及其所有子顶点(达到一定深度)。我们已经有了一个似乎有效的方法:

g.V("4840")
 .repeat(outE().inV().simplePath())
 .times(5)
 .emit()
 .path()
 .by(valueMap(true))
结果是:

[
  [
    {
      "id": 4840,
      "label": "Vertex"
    },
    {
      "id": 4842,
      "label": "child"
    },
    {
      "id": 4838,
      "label": "Vertex"
    }
  ]
]
现在我有了带边的顶点和子顶点。伟大的但是如果我用4836号怎么办?然后我得到一个空数组。这是因为该顶点没有任何传出边。有没有一种方法可以构造一个查询,该查询将给我一个顶点及其链接的顶点,但如果顶点本身没有任何边,它也会给我一个顶点本身


你可以玩这个。

你只需将
repeat()
while..do
切换到
do..while
,方法是将
emit()
移动到
repeat()
的前面:


在结构方面给出了稍微不同的结果,但这确实是我一直在寻找的。我之所以切换到
elementMap()
,并没有特别的原因,只是它产生了比
valueMap(true)
更好的表示。如果使用多属性,通常只需要
valueMap()
g.V("4840")
 .emit()
 .repeat(outE().inV().simplePath())
 .times(5)
 .path()
 .by(elementMap())