2012-04-28 24 views
10

Así es como se puede clasificar (orden) resulta de gráfico Neo4j usando Gremlin:¿Cómo ordenar Y limitar el resultado de Noe4j usando Gremlin?

g.v(id).out('knows').sort{it.name} 

o

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

Ésta es la forma de limitar resultado utilizando offset/salto y límite:

g.v(id).out('knows')[0..9] 

Sin embargo, si combina la ordenación y el límite

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

sería lanzar un error ...

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) 

Respuesta

14

Me tomó un tiempo para averiguar que los métodos maravillosos nativas como tipo no vuelvan Tubos, pero iteradores, iterables, etc. Como tal, a convertir uno de estos objetos de nuevo en una tubería de impulsión es necesario utilizar _():

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

tuve problema similar pero con except(sth).unique() y limito [0..5]. En mi caso:

ERROR:

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

trabaja muy bien:

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

trabaja muy bien también con una especie {}:

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

(Alexei Tenitski respuesta es bueno también)

Cuestiones relacionadas