2012-04-28 69 views
10

這是如何可以進行排序(順序)從Neo4j的曲線圖的結果用的Gremlin:如何使用Gremlin對Noe4j結果進行排序和限制?

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) 

回答

14

我花了一段時間才能弄清楚,像本地Groovy的方法排序不返回管道,但迭代器,iterables等。因此,對將這些對象之一回的流水線流程需要使用_()

g.v(id).out('knows').sort{it.name}._()[0..9] 
0

我有類似的問題,但如果except(sth).unique()和限制[0..5]。 在我的情況:

錯誤:

except(xxx).unique()[0..5] 

正常工作:

except(sth).unique().findAll()[0..5] 

正常工作也與排序{}:

.unique().findAll().sort{it.sth}[0..5] 

(阿列克謝Tenitski回答是好太多)

相關問題