Neo4j Cypher Count 显示节点,而不是关系对或联合集

Neo4j Cypher Count displaying nodes, not relationships pairs Or Union Sets

我的查询是:

MATCH (n)-[:NT]->(p)
WHERE ...some properties filters...
RETURN n,p

结果如下图所示。

如何统计节点总数?

我需要 14 作为文本结果。类似于 RETURN COUNT(n)+COUNT(p) 但它显示 24.

以下请求无法正常工作:

MATCH (n)-[:NT]->(p)
WHERE ...some properties filters...
RETURN count(n)

Returns我是12,图中是关系对的个数,不是节点。

MATCH (n)-[:NT]-(p)
WHERE ...some properties filters...
RETURN count(n)

Returns24.

如何计算出只有外向箭头的两个节点(在本例中)?应该是 14 一次。

UPD:

MATCH (n)-[:NT]->(p)
WHERE ...
RETURN DISTINCT FILTER(x in n.myID WHERE NOT x in p.myID)


MATCH (n)-[:NT]->(p)
WHERE ...
RETURN DISTINCT FILTER(x in p.myID WHERE NOT x in n.myID)

myID 的 DISTINCT UNION 的 COUNT 给了我结果。 不知道用cypher怎么弄。

或集合的 DISTINCT UNION:

MATCH (n)-[:NT]->(p)
WHERE ...
RETURN collect(DISTINCT p.myID), collect(DISTINCT n.myID)

结果是:

collect(DISTINCT p.myID)

26375, 26400, 21636, 29939, 20454, 26543, 19089, 4483, 26607, 30375, 26608, 26605

collect(DISTINCT n.myID)

11977, 19478, 20454

这是 15 项。一种是常见的。如果你 UNION 或 DISTINCT 20454 总数将是 14。图片上的实际节点数。

我无法实现这个简单的模式。

您的原始查询工作正常。

如果您想获得 distinct n 个节点的计数,您的查询应该 RETURN COUNT(DISTINCT n).

统计只有外出关系的节点数:

MATCH (n)-->()
WHERE NOT ()-->(n)
COUNT(DISTINCT n);

计算直接参与 :NT 关系的不同节点的数量:

MATCH (n)-[:NT]-()
COUNT(DISTINCT n);
MATCH (n)-[:NT]->(p)
WHERE ...some properties filters...
WITH collect(DISTINCT p.myID) AS set1
MATCH (n)-[:NT]->(p)
WHERE ...some properties filters...
WITH collect(DISTINCT n.myID) AS set2, set1
WITH set1 + set2 AS BOTH
UNWIND BOTH AS res
RETURN COUNT(DISTINCT res);