2014-02-20 86 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