neo4j 获取聚合的模式

b91juud3  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(222)

我正在学习neo4j,我被要求通过评论找到与用户相关的最常见的企业类别。由于类别实际上并不存在于数据中,而且实际上只有一个企业,我使用了name。但我的方法并没有给予我想要的结果:

MATCH (u:User {name: "Willie"})-[:WROTE]-(:Review)-[:REVIEWS]-(b:Business) 
  RETURN b.name, count(b.name)
  ORDER BY count(b.name)
  LIMIT 1

看起来不对劲的事情:

  • 使用count(b.name)两次是否有效?(是否有方法引用变量?)我想确保这不是重新启动计数。
  • 我在查名字和人数,但我只想知道名字。
  • 有没有更好的聚合方法呢?有没有什么方法可以代替使用类似这样的方法:
MATCH (u:User {name: "Willie"})-[:WROTE]-(:Review)-[:REVIEWS]-(b:Business)
  RETURN mode(b.name)
rekjcdws

rekjcdws1#

您可以将变数用于count(b.name),并使用“WITH”子句只传回名称。

MATCH (u:User {name: "Willie"})-[:WROTE]-(:Review)-[:REVIEWS]-(b:Business) 
  WITH b.name as name, count(b.name) as cnt ORDER BY cnt desc
  RETURN name LIMIT 1

相关问题