Neo4j 聚合后计算

Neo4j 聚合后计算,neo4j,cypher,Neo4j,Cypher,我是Neo4j的新手,我觉得自己被简单的操作绊住了,这些操作是我在常规SQL中使用子查询来解决的 如何减去两行结果?我已将结果分组,并希望返回它们之间的差异: MATCH (seguidores:RelevantTwitterUser {location:"Madrid"})-[:FOLLOWS]->(seguidos:RelevantTwitterUser {location:"Barcelona"}) WITH COLLECT({origen:seguidores.location,

我是Neo4j的新手,我觉得自己被简单的操作绊住了,这些操作是我在常规SQL中使用子查询来解决的

如何减去两行结果?我已将结果分组,并希望返回它们之间的差异:

MATCH (seguidores:RelevantTwitterUser {location:"Madrid"})-[:FOLLOWS]->(seguidos:RelevantTwitterUser {location:"Barcelona"}) 
WITH COLLECT({origen:seguidores.location, user:seguidores.userId}) AS ROWS
MATCH (seguidores:RelevantTwitterUser {location:"Barcelona"})-[:FOLLOWS]->(seguidos:RelevantTwitterUser {location:"Madrid"}) 
WITH ROWS + COLLECT({origen:seguidores.location, user:seguidores.userId}) AS allRows
UNWIND allRows AS ROW
RETURN ROW.origen, COUNT(ROW.user)
对于输出:

使用 如果您想了解此查询的工作原理,并在需要修改此查询时避免获取错误的计数,则应阅读(如
COUNT
)上的文档。了解
分组键
(例如,最后一个
WITH
子句中的
LOC
count
如何影响聚合函数的行为,这一点尤为重要

回答使用
非常感谢两个答案。第一次是我试图表演我搞砸了工会和募捐的东西。谢谢你的回答,这很清楚。第二个比较优雅,我会读关于大小的,它有一个非常方便的语法。
WITH "Madrid" AS loc1, "Barcelona" AS loc2
MATCH (:RelevantTwitterUser{location:loc1})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc2})
WITH loc1, loc2, COUNT(*) AS count1
MATCH (:RelevantTwitterUser{location:loc2})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc1})
WITH loc1, loc2, count1, COUNT(*) AS count2
RETURN loc1, count1, loc2, count2, count1 - count2 AS diff
WITH "Madrid" AS loc1, "Barcelona" AS loc2
WITH loc1, loc2,
  SIZE((:RelevantTwitterUser{location:loc1})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc2})) AS count1,
  SIZE((:RelevantTwitterUser{location:loc2})-[:FOLLOWS]->(:RelevantTwitterUser{location:loc1})) AS count2
RETURN loc1, count1, loc2, count2, count1 - count2 AS diff