11

これは、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)
4

2 に答える 2

15

sortのようなネイティブGroovyメソッドがパイプを返すのではなく、イテレータ、イテレータなどを返すことを理解するのに少し時間がかかりました。したがって、これらのオブジェクトの1つをパイプラインフローに戻すには、_()を使用する必要があります。

g.v(id).out('knows').sort{it.name}._()[0..9]
于 2012-04-28T20:47:05.057 に答える
0

私は同様の問題を抱えていましたがexcept(sth).unique()、制限があります[0..5]。私の場合:

エラー:

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

正常に動作します:

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

sort {}でもFINEを動作させます:

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

(Alexei Tenitskiの答えも良いです)

于 2013-03-28T16:50:08.727 に答える