Ho una serie di dati per un albero genealogico in Neo4j e sto cercando di costruire una query Cypher che produce un insieme di dati JSON set simile al seguente:Creazione di Alberi con Neo4j
{Name: "Bob",
parents: [
{Name: "Roger",
parents: [
Name: "Robert",
Name: "Jessica"
]},
{Name: "Susan",
parents: [
Name: "George",
Name: "Susan"
]}
]}
mio grafico ha una relazione di PARENT tra i nodi MEMBER (es. MATCH (p.Member) - [: PARENT] -> (c.Member)). Ho trovato Nested has_many relationships in cypher e neo4j cypher nested collect che finisce per raggruppare tutti i genitori insieme per il nodo figlio principale che sto cercando.
Aggiunta di una certa chiarezza sulla base del feedback:
Ogni membro ha un identificatore univoco. I sindacati sono attualmente tutti associati alla relazione PARENT. Tutto è indicizzato in modo che le prestazioni non ne risentano. Quando eseguo una query per ottenere di nuovo il grafico del nodo, ottengo i risultati che mi aspetto. Sto cercando di restituire un output che posso usare a scopo di visualizzazione con D3. Idealmente questo sarà fatto con una query di Cypher visto che sto usando l'API per accedere a neo4j dal frontend che si sta costruendo.
Aggiunta di una query di esempio:
MATCH (p:Person)-[:PARENT*1..5]->(c:Person)
WHERE c.FirstName = 'Bob'
RETURN p.FirstName, c.FirstName
Questa query restituisce un elenco di ciascun genitore da cinque generazioni, ma invece di mostrare la gerarchia, è messa in vendita di 'Bob' come il bambino per ogni relazione. Esiste una query Cypher che mostri almeno ogni relazione nei dati? Posso formattare come devo da lì ...
Maggiori informazioni si prega; stai usando l'API REST o un DB incorporato? Se utilizzi l'API REST, il tuo problema è semplificato forse dall'attività di trasformazione del JSON che l'API REST sputa, in questa struttura che stai cercando. http://neo4j.com/docs/stable/rest-api.html – FrobberOfBits