我正在使用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)
我对图模型还不太确定,你在节点和关系中存储了什么属性。但是从你分享的链接我认为下面的查询应该有效..
MATCH (a)-[:LOGS]->(b)-[:FEATURES]->(c) where a.type="listener"
and b.type="scrobble"
and c.type="track" and b.name = "100001" return *
这将提供与名称为listeners
的特定tracks
相关的所有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