2011-12-28 20 views
7

इस कोड में, मैं निष्पादन परिणाम में सभी नोड्स को कैसे पुन: सक्रिय कर सकता हूं?नियो 4 जे साइफर: निष्पादन पर पुन: प्रयास कैसे करें परिणाम परिणाम

CypherParser parser = new CypherParser(); 
ExecutionEngine engine = new ExecutionEngine(graphDb); 
Query query = parser.parse("START n=node(2) MATCH (n)<-[:IS_A]-(x) RETURN x"); 
ExecutionResult result = engine.execute(query); 
// iterate over nodes in result and print all properties 

उत्तर

8

साइफर के लिए जावडोक इस बारे में बहुत स्पष्ट नहीं है, संभवतः क्योंकि कोई भी नहीं है।

इसलिए मैंने आपके कोड को "परीक्षण" में फिर से बनाया है जो दर्शाता है कि मैच में नोड्स के गुणों को फिर से कैसे चालू किया जाए। डोमेन फल के प्रकार है, जहां प्रत्येक प्रकार "फल" नोड से जुड़ा हुआ है। प्रासंगिक स्निपेट यह है, क्वेरी चलाने के बाद:

Iterator<Node> kindsOfFruit = result.columnAs("x"); 
    while (kindsOfFruit.hasNext()) { 
     Node kindOfFruit = kindsOfFruit.next(); 
     System.out.println("Kind #" + kindOfFruit.getId()); 
     for (String propertyKey : kindOfFruit.getPropertyKeys()) { 
      System.out.println("\t" + propertyKey + " : " + 
       kindOfFruit.getProperty(propertyKey)); 
     } 
    } 

यह result.columnAs("x") कुंजी है कि है। चालाकी से नामित String n पैरामीटर परिणाम खंड में "कॉलम नाम" को संदर्भित करता है। इस उदाहरण में हम "एक्स" कॉलम चाहते हैं और हम यह Node वस्तुओं को शामिल करने की उम्मीद है, इसलिए हम एक Iterator<Node> के लिए सीधे असाइन कर सकते हैं और फिर उस का उपयोग करें।

यदि कॉलम नहीं मिला है, तो हमें org.neo4j.graphdb.NotFoundException मिल जाएगा।

यदि हम गलत वर्ग को असाइनमेंट के लिए पूछते हैं, तो हमें सामान्य java.lang.ClassCastException मिल जाएगा।

पूर्ण काम कर उदाहरण यहाँ उपलब्ध है: https://github.com/akollegger/neo4j-trials/blob/master/src/test/java/org/akollegger/neo4j/trials/richardw/ExecutionResultIteratorTrial.java

आशा है कि मदद करता है।

चीयर्स, एंड्रियास

+0

मदद कर सकता है मैं http://api.neo4j.org के साथ-जावाडोक में कुछ बुनियादी विवरण जोड़ दिया है, देखा जा सकता है – akollegger

+0

यह ध्यान रखना महत्वपूर्ण है कि यह एक 'scala.collection.Iterator' है और नहीं' java.util.Iterator' !!! – jocull

2
for (Map<String,Object> row : result) { 
    Node x = (Node)row.get("x"); 
    for (String prop : x.getPropertyKeys()) { 
     System.out.println(prop +": "+x.getProperty(prop)); 
    } 
} 
+0

यह तब काम करता है जब x प्रत्येक पंक्ति में एकल मान होता है। यदि एक्स में एक ही पंक्ति में एकाधिक मान हैं, तो आप कैसे पुन: सक्रिय करेंगे? (पूर्व के लिए)। पहली पंक्ति में एक्स, आम, नारंगी, केला के तहत। दूसरी पंक्ति में नाशपाती, चेरी। जब मैं इस तरह के परीक्षा के साथ काम करता हूं, तो यह मुझे क्लासकास्ट अपवाद फेंकता है। क्या तुम्हारे पास कोई विचार है? – priya

1
Iterator<Object> columnAs = result.columnAs("n"); 
while(columnAs.hasNext()) 
{ 
Node n = (Node)columnAs.next(); 
for (String key : n.getPropertyKeys()) { 
sysout("{ " + key + " : " + n.getProperty(key)+ " } "); 
} 

इससे आपको यह पता

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

  • कोई संबंधित समस्या नहीं^_^