这是使用 Gremlin 对 Neo4j 图表结果进行排序(排序)的方法:
g.v(id).out('knows').sort{it.name}
或
g.v(id).out('knows').sort{a,b -> a.name <=> b.name}
这是如何使用偏移/跳过和限制来限制结果:
g.v(id).out('knows')[0..9]
但是,如果您将排序和限制结合起来
g.v(id).out('knows').sort{it.name}[0..9]
它会抛出一个错误...
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)
最佳答案
我花了一段时间才弄清楚像 sort 这样的原生 Groovy 方法不返回管道,而是返回迭代器、可迭代对象等。因此,将这些对象之一转换回管道流您需要使用_():
g.v(id).out('knows').sort{it.name}._()[0..9]
关于sorting - 如何使用 Gremlin 对 Noe4j 结果进行排序和限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10367331/