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