2012-04-28 9 views
10

इस दुष्टात्मा है आप कैसे (क्रम) Neo4j ग्राफ से परिणाम का उपयोग कर सॉर्ट कर सकते हैं है: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

यह मुझे कुछ समय लिया यह पता लगाने की है कि की तरह देशी ग्रूवी तरीकों तरह पाइप्स, लेकिन iterators, 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 जवाब भी अच्छा है)

संबंधित मुद्दे