我最近才开始使用neo4j,但遇到了一个问题。在这里似乎没有答案,但是我可能措词不正确。我正在建立一个对音乐进行分类的小型网站。存在多个与BELONGS_TO
流派节点有关系的歌曲节点。如何获得属于一组用户指定类型的每首歌曲。
例如。Song1,Song2,Song3都属于Pop和Electronic。Song4只是属于Pop。如何查询以获取属于流行音乐和电子音乐的每首歌曲?在这种情况下,Song1,Song2,Song3。
我已经为此苦了一段时间。到目前为止,这是我所拥有的,但是什么也不会返回。如果我替换为AND
,则OR
获得属于这些流派之一的所有歌曲。
MATCH (n:Song)-[r:BELONGS_TO]->(Genre)
WHERE (n)-[r]->(Genre{name:"Pop"}) AND (n)-[r]->(Genre{name:"Electronic"})
RETURN n
谢谢你。
您在该WHERE
子句中尝试执行的操作实际上应该在该MATCH
子句中执行。干得好:
MATCH (g1:Genre {name: "Pop"})<-[:BELONGS_TO]-(popElectronicSongs:Song)-[:BELONGS_TO]->(g2:Genre {name: "Electronic"});
RETURN popElectronicSongs;
实际上,仅使用该MATCH
子句就可以做很多事情,如您在此处看到的。该WHERE
位通常用于基于各种谓词的过滤。例如,您可能说WHERE popElectronicSongs.title =~ /S.*/
只过滤名称以S开头的歌曲。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句