我很努力地编写一个查询,它会为每个用户返回关于大多数播放曲目的信息。 我去像这样的东西:Neo4J - 选择最大记录数
MATCH (l:Listener)-[lo:LOGS]->(s:Scrobble)-[f:FEATURES]->(t:Track)<-[p:PERFORMS]-(a:Artist)
with l,a,count(*) as numberOfScrobbles
return l.name, a.title, numberOfScrobbles
,并得到值的列表:用户名 - 艺术家的名字 - 通过给艺术家创造与数百曲目的数量。
我的目标是为每个用户获取最受欢迎的艺术家(艺术家为每个用户提供大部分音乐作品)。我得到的最接近的是这个:
MATCH (l:Listener)-[lo:LOGS]->(s:Scrobble)-[f:FEATURES]->(t:Track)<-[p:PERFORMS]-(a:Artist)
with l,a,count(*) as numberOfScrobbles
return l.name, max(numberOfScrobbles)
,给了我一个最喜爱的艺术家为特定用户播放的曲目的数量,但我怎么能加入适当的艺术家的名字,以这样的结果?
任何线索/提示?
谢谢!解决了这个问题,但是使用了一些手工比较算法。我认为有一些内置功能可以增强这种操作(例如SQL中的子查询)。好吧,看起来Neo4J在查询数据存储时涉及更直接的编程;)。 – mcmajkel