Gremlin查询:另一种在循环中编写它的方法

时间:2012-08-30 01:41:08

标签: graph neo4j graph-databases gremlin

g.v(1).out('__SYSTEM_HAS_CHILD').filter{it.name == 'Journal'}.out('__SYSTEM_HAS_CHILD').filter{it.name == 'travel'}.out('__SYSTEM_HAS_CHILD').filter{it.name == 'Alaskan-Natives'}.map

也许存储一个带有项目的数组,然后遍历每个执行out并将其附加到it.name;并迭代(计数)以确保我们不会继续超过数组的长度。

1 个答案:

答案 0 :(得分:2)

您可以像这样重新格式化管道:

pipe = g.v(1)
pipe = pipe.out('__SYSTEM_HAS_CHILD').filter{it.name == 'Journal'}
pipe = pipe.out('__SYSTEM_HAS_CHILD').filter{it.name == 'travel'}
pipe = pipe.out('__SYSTEM_HAS_CHILD').filter{it.name == 'Alaskan-Natives'}
pipe.map

然后您可以使用Groovy构造将其转换为循环:

names = ["Journal", "travel", "Alaskan-Natives"]
pipe = g.v(1)
names.each() { name -> 
  pipe = pipe.out('__SYSTEM_HAS_CHILD').filter{it.name == name} 
}
pipe.map

注意:为什么要将管道作为地图返回?要迭代管道,您可以使用:

pipe.iterate()
pipe.toList()

请参阅https://github.com/tinkerpop/gremlin/wiki/Gremlin-Methods