java neo4j hashmap cypher

¿Recolectando el resultado de la consulta de cifrado en un hash map java?



neo4j hashmap (1)

Este es un seguimiento de la pregunta Buscando nodos conectados .

El código es

firstNode = graphDb.createNode();//creating nodes firstNode.setProperty( "person", "Andy " ); Label myLabel = DynamicLabel.label("person"); firstNode.addLabel(myLabel); ... relationship = firstNode.createRelationshipTo( secondNode, RelTypes.emails );// creating relationships relationship.setProperty( "relationship", "email " );.... ExecutionEngine engine = new ExecutionEngine(graphDb); ExecutionResult result = engine.execute("MATCH (sender:person)-[:emails]- (receiver)RETURN sender, count(receiver)as count, collect(receiver) as receivers ORDER BY count DESC "); System.out.println(result.dumpToString());

El resultado que obtuve fue:

sender | count | receivers Node[2]{person:"Chris"} | 3 | [Node[4]{person:"Elsa "},Node[0]{person:"Andy "},Node[1]{person:"Bobby"}] Node[4]{person:"Elsa "} | 3 | [Node[5]{person:"Frank"},Node[2]{person:"Chris"},Node[3]{person:"David"}] Node[1]{person:"Bobby"} | 3 | [Node[2]{person:"Chris"},Node[3]{person:"David"},Node[0]{person:"Andy "}] Node[5]{person:"Frank"} | 2 | [Node[3]{person:"David"},Node[4]{person:"Elsa "}

¿Cómo recoger al emisor como clave y receptores como valores? Por ejemplo: {Frank =[David, Elsa], Chris =[Elsa, Andy, Nobby]..

¿Alguna idea?

Inicialmente traté de repetir algo como esto

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

Esto arroja la excepción classcast. Funciona para la columna "emisor" y no para "receptores".

Soy muy nuevo en Cypher. No sé cómo transformar el resultado en un mapa hash. Cómo es esto posible ?


Puede reescribir la cifra para devolver un mapa en su lugar ... (dividir para facilitar la lectura)

MATCH (sender:person)-[:emails]->(receiver) WITH sender, collect(receiver.person) as receivers RETURN {sender: sender.person, receivers: receivers) ORDER BY size(receivers) DESC