2012-04-28 8 views
10

Đây là cách bạn có thể sắp xếp (theo thứ tự) kết quả từ Neo4j biểu đồ sử dụng Gremlin:Cách sắp xếp VÀ giới hạn kết quả Noe4j bằng Gremlin?

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

hoặc

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

Đây là cách để hạn chế kết quả sử dụng bù đắp/bỏ qua và giới hạn:

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

Tuy nhiên, nếu bạn kết hợp cả hai loại và giới hạn

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

nó sẽ ném ra một lỗi ...

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) 

Trả lời

14

Tôi đã mất một thời gian để tìm ra rằng phương pháp Groovy bản địa như loại không gửi lại ống, nhưng lặp, iterables vv Như vậy, để chuyển đổi một trong các đối tượng này lại thành một đường ống chảy bạn cần phải sử dụng _():

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

tôi có vấn đề tương tự nhưng với except(sth).unique() và hạn chế [0..5]. Trong trường hợp của tôi:

LỖI:

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

trình FINE:

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

trình FINE còn với loại {}:

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

(Alexei Tenitski Câu trả lời là tốt quá)