groovy - 使用 gremlin 查找距起始节点给定距离内的所有节点

标签 groovy cypher gremlin

我正在尝试通过 java/pipes 使用 gremlin,并且作为我的第一个查询之一,我试图找到从给定起始节点可到达的最大距离为 3 的所有节点。在 cypher 中,我的查询是:

START n = node(*)
MATCH n -[*1..3]-> reached 
WHERE (has(n.id) and n.id = \"v1\")
RETURN distinct n, reached

哪个工作正常,到目前为止我在 gremlin 中拥有的是:
_().has('idd', 'v1').out().loop(1){it.loops < 3}{true}

这不能正常工作。根据我的理解,它应该发出每次迭代的输出并迭代 3 次。目前我得到的结果太少了。

任何帮助,将不胜感激,

谢谢。

最佳答案

如果您的起始节点是 g.v(1),那么要在三个步骤之外找到所有唯一节点,请执行以下操作:

g.v(1).out.loop(1){it.loops < 3}{true}.dedup

..你可能不得不让它<4(忘记)。接下来,如果您的起始节点具有 idd=v1,则执行以下操作:
g.V('idd','v1').out.loop(1){it.loops < 3}{true}.dedup

确保您在 idd 上有一个索引,否则对于那些具有 idd=v1 的顶点,它是通过所有 g.V 的线性扫描。

哈,
马可。

关于groovy - 使用 gremlin 查找距起始节点给定距离内的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14431766/

相关文章:

gremlin - 如何使用 Gremlin API 在 Cosmos DB 中进行简单计算

groovy - 作为一种语言,Groovy 有多稳定?

sorting - Grails 对多个字段进行映射排序::Groovy 对多个映射条目进行排序

azure-cosmosdb - Cosmos DB 搜索查询采用任意字符的顶点值

java - Gremlin:Blazegraph Remote

neo4j - Cypher Query - 返回每个匹配关系的权重和总权重

java - 如何使用 MarkupBuilder 将 xml 写入文件

java - 如果在grails中知道bean名称,则获取文件名

java - 无法使用JAVA api创建索引

csv - Neo4j 将数组元素扩展为单独的行