¿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