首页 > 解决方案 > Gremlin 查询以获取带有子顶点的顶点,即使它没有任何子顶点

问题描述

假设我有这张图(链接到 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"
    }
  ]
]

所以我现在有了带边的顶点和子顶点。伟大的。但是如果我使用 id 4836 呢?然后我得到一个空数组。这是因为该顶点没有任何出边。有没有办法构造一个查询,它会给我一个带有链接顶点的顶点,如果它没有任何边,也可以给我一个顶点本身?

你可以在这里玩这个。

标签: gremlin

解决方案


您只需要将repeat()from移动while..do到的前面来切换:do..whileemit()repeat()

g.V("4840")
 .emit()
 .repeat(outE().inV().simplePath())
 .times(5)
 .path()
 .by(elementMap())

推荐阅读