如何使用Gremlin对Noe4j结果进行排序和限制?

Ale*_*ski 11 sorting graph neo4j gremlin

这是你如何使用Gremlin对Neo4j图表进行排序(排序)的方法:

g.v(id).out('knows').sort{it.name}
Run Code Online (Sandbox Code Playgroud)

要么

g.v(id).out('knows').sort{a,b -> a.name <=> b.name}
Run Code Online (Sandbox Code Playgroud)

这是如何使用偏移/跳过和限制来限制结果:

g.v(id).out('knows')[0..9]
Run Code Online (Sandbox Code Playgroud)

但是,如果将sort和limit结合使用

g.v(id).out('knows').sort{it.name}[0..9]
Run Code Online (Sandbox Code Playgroud)

它会引发错误......

javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: java.util.ArrayList$ListItr.getAt() is applicable for argument types: (groovy.lang.IntRange) values: [0..9]
Possible solutions: getAt(java.lang.String), getAt(int), next(), mean(), set(java.lang.Object), putAt(java.lang.String, java.lang.Object)
Run Code Online (Sandbox Code Playgroud)

Ale*_*ski 15

我花了一段时间才发现像sort这样的原生Groovy方法不会返回Pipes,而是返回迭代器,迭代等.因此,要将其中一个对象转换回Pipeline流,您需要使用_():

g.v(id).out('knows').sort{it.name}._()[0..9]
Run Code Online (Sandbox Code Playgroud)