Neo4j-在同一个cypher查询中按属性值计算多个节点

Neo4j-在同一个cypher查询中按属性值计算多个节点,neo4j,cypher,Neo4j,Cypher,让我们创建一个带有属性评级的节点引用。假设我们在数据库中有2个参考,2个“阳性”,1个“阴性” 要计数正引用的密码查询: MATCH (positive:Reference{rating:'Positive'}) return count(positive) MATCH (negative:Reference{rating:'Negative'}) return count(negative) 返回2,好吗 用于计数否定引用的密码查询: MATCH (positive:Reference{r

让我们创建一个带有属性
评级的节点
引用
。假设我们在数据库中有2个参考,2个“阳性”,1个“阴性”

要计数引用的密码查询:

MATCH (positive:Reference{rating:'Positive'}) return count(positive)
MATCH (negative:Reference{rating:'Negative'}) return count(negative)
返回2,好吗

用于计数否定引用的密码查询:

MATCH (positive:Reference{rating:'Positive'}) return count(positive)
MATCH (negative:Reference{rating:'Negative'}) return count(negative)
返回1,好吗

Cypher查询以同时计数正引用和负引用。基本上,将前面的两个查询合并到一个查询中

MATCH (positive:Reference{rating:'Positive'})
MATCH (negative:Reference{rating:'Negative'})
return count(positive) as positive, count(negative) as negative
我希望返回的值是正2和负1。然而,这两个结果都是2

我错过什么了吗?也许我错了,但我发誓这在旧版本的neo4j中是有效的(现在我使用的是3.3.2)


提前感谢您的帮助。

请记住,当您进行这样的背对背匹配时,当您正在查找的内容之间没有关系时,您将得到
正的所有元素与
负的所有元素的叉积。因此,在本例中,由于有2个肯定响应和1个否定响应,因此总共有2 x 1=2行(每行将列出一个否定节点)。您可以将报税表更改为
return positive,negative
,并在table results视图中查看此信息

要获得所需的结果,可以获取不同节点的计数:

RETURN count(DISTINCT positive) as positive, count(DISTINCT negative) as negative
或者在赛后立即使用更好的收集方法,这最终会减少工作量:

MATCH (positive:Reference{rating:'Positive'})
WITH count(positive) as positive
MATCH (negative:Reference{rating:'Negative'})
RETURN positive, count(negative) as negative

请记住,当您进行这样的背对背匹配时,当您正在查找的内容之间没有关系时,您将得到
的所有元素与
的所有元素的叉积。因此,在本例中,由于有2个肯定响应和1个否定响应,因此总共有2 x 1=2行(每行将列出一个否定节点)。您可以将报税表更改为
return positive,negative
,并在table results视图中查看此信息

要获得所需的结果,可以获取不同节点的计数:

RETURN count(DISTINCT positive) as positive, count(DISTINCT negative) as negative
或者在赛后立即使用更好的收集方法,这最终会减少工作量:

MATCH (positive:Reference{rating:'Positive'})
WITH count(positive) as positive
MATCH (negative:Reference{rating:'Negative'})
RETURN positive, count(negative) as negative

非常感谢您的快速和解释清楚的答复!它就像一个符咒!非常感谢您的快速和解释清楚的答复!它就像一个符咒!