2014-02-20 114 views
0

我正在使用last.fm數據集並將其導入到neo4j 2.0.1中。現在我想遍歷圖形,這樣我可以得到它,我通過執行以下MySQL查詢得到類似的結果:密碼查詢遍歷圖

SELECT * from music.logs, music.features, music.nodespart2 
WHERE logs.song="1000001" 
    AND logs.song=features.scrobble 
    AND fetures.mbid=nodespart2.name; 

Neo4j的我想執行類似的查詢, 從特定開始index lets say 1000001->logs->features ... 任何幫助,將不勝感激。

+0

可以共享數據集樣品或任何圖圖? –

+0

圖爲http://imgur.com/dgvzHFA – shailza

+0

圖爲http://imgur.com/dgvzHFA,用於上述MySQL查詢的表格結構爲http://imgur.com/iwi2fon。在neo4j中有9個csv文件用於導入節點和關係。在我分享的第二張圖中,FEATURES&LOGS是節點之間的兩種關係。這兩個表的「TYPE」列中的值分別是FEATURES&LOGS,即條目在所有情況下都是相同的。 – shailza

回答

0

我對圖模型還不太確定,你在節點和關係中存儲什麼樣的特性。但是從你的鏈接共享,我認爲以下查詢應該工作..

MATCH (a)-[:LOGS]->(b)-[:FEATURES]->(c) where a.type="listener" 
and b.type="scrobble" 
and c.type="track" and b.name = "100001" return * 

這將給所有listenerstracks與特定scrobble與名稱註釋後1000001

編輯

MATCH (b)-[:FEATURES]->(c) where b.type="scrobble" and c.type="track" 
and b.name = "100001" return c.title 

我建議您使用Labels重新導入您的數據集。更多關於標籤的信息:here。它會節省檢查類型的努力,並且可以讓你將它融入匹配模式本身;也更加高效。

編輯加入

查詢1後標籤:

MATCH (a:listener)-[:LOGS]->(b:scrobble)-[:FEATURES]->(c:track) 
where b.name = "100001" return * 

QUERY2:

MATCH (b:scrobble)-[:FEATURES]->(c:track) where b.name = "100001" return c.title 
+0

非常感謝你的回覆。我試圖執行該查詢,但它返回0行。那麼讓我再次說明我的目的?我想獲得與特定音樂100001有關的曲目的標題。讓我以圖解的方式解釋您可能會對其有幫助的方面。我的要求的流程顯示在這裏http://imgur.com/pxhtV6W我想獲得特定節目的標題。可幫助您瞭解關係的截圖位於http://imgur.com/LtHLTra,D4Qvasp和http://imgur.com/LtHLTra,D4Qvasp#1。 – shailza

+0

看看現在是否有幫助.. –

+0

不,它仍然工作。你能告訴我,查詢應該從圖中看到一個節點作爲輸出。我想獲得node =「100001」。 – shailza