Attualmente sto utilizzando i dati di esempio su console.neo4j.org per scrivere una query che emette JSON gerarchico.Utilizzo di Cypher per restituire JSON nidificato e gerarchico da un albero
i dati di esempio viene creato con
create (Neo:Crew {name:'Neo'}), (Morpheus:Crew {name: 'Morpheus'}), (Trinity:Crew {name: 'Trinity'}), (Cypher:Crew:Matrix {name: 'Cypher'}), (Smith:Matrix {name: 'Agent Smith'}), (Architect:Matrix {name:'The Architect'}),
(Neo)-[:KNOWS]->(Morpheus), (Neo)-[:LOVES]->(Trinity), (Morpheus)-[:KNOWS]->(Trinity),
(Morpheus)-[:KNOWS]->(Cypher), (Cypher)-[:KNOWS]->(Smith), (Smith)-[:CODED_BY]->(Architect)
L'uscita ideale è la seguente
name:"Neo"
children: [
{
name: "Morpheus",
children: [
{name: "Trinity", children: []}
{name: "Cypher", children: [
{name: "Agent Smith", children: []}
]}
]
}
]
}
In questo momento, sto utilizzando la seguente query
MATCH p =(:Crew { name: "Neo" })-[q:KNOWS*0..]-m
RETURN extract(n IN nodes(p)| n)
e ottenere questo
[(0:Crew {name:"Neo"})]
[(0:Crew {name:"Neo"}), (1:Crew {name:"Morpheus"})]
[(0:Crew {name:"Neo"}), (1:Crew {name:"Morpheus"}), (2:Crew {name:"Trinity"})]
[(0:Crew {name:"Neo"}), (1:Crew {name:"Morpheus"}), (3:Crew:Matrix {name:"Cypher"})]
[(0:Crew {name:"Neo"}), (1:Crew {name:"Morpheus"}), (3:Crew:Matrix {name:"Cypher"}), (4:Matrix {name:"Agent Smith"})]
Qualche consiglio per capirlo? Grazie
[Il repo APOC] (https://github.com/neo4j-contrib/neo4j-apoc-procedures) fornisce la cronologia del nome. – cybersam
Sì. Mi riferivo al fatto che l'esempio in questa domanda proviene anche da Matrix. – flq
Questa è di gran lunga la caratteristica più potente (almeno per me almeno) del plug-in APOC, e molto facile da portare in Docker con l'immagine Neo4j (vedi documentazione), se si usa docker-compose, usa i volumi: -:/plugins, "build" e poi "up". Grazie per aver condiviso questo @cybersam, cambiato la mia vita e il mio tempo libero! –