Cypher新手在這裏。使用Neo4j和Cypher標記分組標籤的媒體
我使用下面的代碼製作了此圖的標記的媒體。
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)
我想做的標籤組一起到環境中,這樣一個上下文節點的含義多個標籤相同。
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)
所以現在我們有這個東西。
我想借此上下文節點,並得到媒體,使得這方面的所有標籤描述每個返回的媒體。
我試過MATCH (c:Context { name: 'Funny Movies' })-[:INCLUDES]->()-[:DESCRIBES]->(m) RETURN m
以匹配標有Funny
和Movies
的媒體。預期的輸出僅爲The Hangover
,但我獲得了所有媒體。
這是很明顯,我不明白那種查詢我需要寫。我的查詢出了什麼問題,以及如何生成我想要的輸出?
美麗。謝謝,並接受。我認爲指定恰好一個上下文會將輸出過濾到僅連接到該上下文的頂點。既然它沒有,我最初的查詢究竟做了什麼? –
你的查詢只是模式,translate()到節點和[]到關係,你會發現它有5種模式,以不同的媒體。 –