2013-05-09 9 views
6

Mi piacerebbe combinare due richieste in una query e non sono sicuro di cosa succede quando vengono utilizzate 2 istruzioni match in una singola query di cifratura.come utilizzare due istruzioni match in una query cifrata

dire che ho una lista di amici e mi piacerebbe vedere un elenco dei miei amici con ciascuno dei loro zii e fratelli elencati in una raccolta. Posso avere due dichiarazioni match che farebbero il lavoro? per esempio.

match friends-[:childOf]->parents-[:brother]->uncles 
    , friends-[:childOf]->parents<-[:childOf]-siblings 
return friends, collect(siblings), collect(uncles) 

Tuttavia, se faccio una query come questa, non restituisce sempre risultati.

+2

Puoi condividere un grafico di esempio tramite http://console.neo4j.org/? –

risposta

7

Dal momento che avete già scelto i genitori nella prima classe partita, si può fare in questo modo -

match friends-[:childOf]->parents-[:brother]->uncles 
with friends, parents, uncles 
match parents<-[:childOf]-siblings 
return friends, collect(siblings), collect(uncles) 
1

Si consiglia di fare un po 'di quei rapporti opzionali. Ad esempio, se trovi un fratello ma non trovi alcuno, questa query restituirà null perché non ha soddisfatto entrambe le clausole di corrispondenza. Se rendi opzionali i rapporti finali, allora non devi soddisfare completamente entrambe le clausole per restituire i dati. Quindi:

match friends-[:childOf]->parents-[?:brother]->uncles 
    , friends-[:childOf]->parents<-[?:childOf]-siblings 
return friends, collect(siblings), collect(uncles) 
Problemi correlati