2017-04-02 2 views
0

Ich habe einen Knotentyp Author, der durch den Beziehungstyp WROTE mit den Knotentypen Book und Magazine verknüpft ist. Ich muss alle Bücher und Zeitschriften finden, die ein bestimmter Autor in einer einzigen Suchanfrage geschrieben hat, und in den Abfrageergebnissen möchte ich zwischen den Ergebnissen des Buches und des Magazins unterscheiden können.Wie gebe ich die Node-Klasse zurück oder gebe die Abfrageergebnisse in Neo4j ein

Eine Möglichkeit, dies zu erreichen, besteht darin, separate Beziehungen für Bücher und Zeitschriften zu definieren und den Wert TYPE(relationship) in den Ergebnissen zurückzugeben, um die Ergebnisse für Bücher im Vergleich zu Zeitschriften zu erzielen.

MATCH (a:Author)-[r]->(i) WHERE TYPE(r) = 'WROTE_BOOK' OR TYPE(r) = 'WROTE_MAGAZINE' 
RETURN TYPE(r), i 

Allerdings würde ich gerne in der Lage sein, dies ohne separate Beziehungen für WROTE zu tun. Gibt es eine Möglichkeit, den Knotentyp oder die Knoten in den Abfrageergebnissen abzufragen? In dem obigen Beispiel, so etwas wie unten:

MATCH (a:Author)-[:WROTE]->(i) WHERE TYPE(i) = 'Book' OR TYPE(i) = 'MAGAZINE' 
RETURN TYPE(i), i 

Es scheint, dass die TYPE() Funktion für Beziehungen nur zur Verfügung steht, nicht für Knoten. Danke im Vorraus für deine Hilfe!

Antwort

2

Typ ist für Beziehungen und Beschriftungen ist für Knoten.

MATCH (a:Author)-[:WROTE]->(i) WHERE labels(i) in ['Book','MAGAZINE'] 
RETURN labels(i), i 

wenn Ihr Autor nur Zeitschriften und Bücher geschrieben, die Sie nicht brauchen die WHERE Filter.

MATCH (a:Author)-[:WROTE]->(i) 
RETURN labels(i), i 
+0

Danke @Tomaz! Funktioniert perfekt! –

Verwandte Themen