Cypher Neuling hier.Tagging Medien mit gruppierten Tags mit Neo4j und Cypher
Ich habe dieses Diagramm der markierten Medien mit dem folgenden Code erstellt.
CREATE
(funny:Tag { name: 'Funny' }),
(sad:Tag { name: 'Sad' }),
(movie:Tag { name: 'Movie' }),
(tv:Tag { name: 'TV Show' }),
(hangover:Media { name: 'The Hangover' }),
(koth:Media { name: 'King of the Hill' }),
(simpsons:Media { name: 'The Simpsons' }),
(twm:Media { name: 'Tuesdays with Morrie' }),
(mm:Media { name: 'Mary & Max' }),
(funny)-[:DESCRIBES]->(hangover),
(funny)-[:DESCRIBES]->(koth),
(funny)-[:DESCRIBES]->(simpsons),
(sad)-[:DESCRIBES]->(twm),
(sad)-[:DESCRIBES]->(mm),
(movie)-[:DESCRIBES]->(hangover),
(movie)-[:DESCRIBES]->(twm),
(movie)-[:DESCRIBES]->(mm),
(tv)-[:DESCRIBES]->(koth),
(tv)-[:DESCRIBES]->(simpsons)
Was ich will ist Gruppe Schlagwörter zusammen in Contexts tun, so dass ein Context-Knoten die gleiche Bedeutung wie mehrere Tags hat.
MATCH
(tf:Tag { name: 'Funny' }),
(tr:Tag { name: 'Sad' }),
(tm:Tag { name: 'Movie' })
(tt:Tag { name: 'TV Show' })
CREATE
(fm:Context { name: 'Funny Movies' }),
(ft:Context { name: 'Funny TV' }),
(s:Context { name: 'Sad Movies' }),
(fm)-[:INCLUDES]->(tf),
(fm)-[:INCLUDES]->(tm),
(ft)-[:INCLUDES]->(tf),
(ft)-[:INCLUDES]->(tt),
(s)-[:INCLUDES]->(tm),
(s)-[:INCLUDES]->(tr)
So jetzt haben wir dieses Ding.
Ich möchte einen Context-Knoten zu übernehmen und Medien so erhalten, dass alle Tags in diesem Zusammenhang beschreiben jeweils Medien zurückgegeben.
Ich probierte MATCH (c:Context { name: 'Funny Movies' })-[:INCLUDES]->()-[:DESCRIBES]->(m) RETURN m
, um Medien zu entsprechen, die sowohl mit Funny
als auch mit Movies
markiert waren. Die erwartete Ausgabe war nur The Hangover
, aber ich bekomme stattdessen alle Medien.
Es ist ziemlich offensichtlich, dass ich nicht verstehe, die Art der Abfrage, die ich schreiben muss. Was ist falsch an meiner Abfrage und wie kann ich die gewünschte Ausgabe erstellen?
Schöne. Danke und akzeptiert. Ich dachte, dass die Angabe genau eines Kontexts die Ausgabe an Scheitelpunkte filtern würde, die nur mit diesem Kontext verbunden sind. Da es nicht war, was genau tat meine ursprüngliche Abfrage? –
Ihre Abfrage folgt nur dem Muster, translate() zu den Knoten und [] zu den Beziehungen und Sie werden sehen, dass es 5 Muster zu verschiedenen Medien hat. –