neo4j中的关系计数

时间:2015-04-24 16:28:22

标签: neo4j cypher graph-databases

我有一个问题。我正在尝试运行此查询。

START n= NODE(5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760) 
MATCH p=(a)-[:KNOWS]-(n)-[:KNOWS]-(b)
OPTIONAL MATCH q=(a)-[:KNOWS]-(b)
RETURN Distinct n.name AS ID,COUNT(distinct p) as NR, COUNT(q) as BR;

结果有点奇怪。我的数据库总共有276597个节点和401634个关系。但是在上述查询的结果中,我在图形视图中有一个节点的392502关系。我找到了2 q relationships,但是以表格形式它们是零!

以下是上述查询的结果:

Result of above query

1 个答案:

答案 0 :(得分:1)

由于您没有在查询中指明任何关系的方向性,因此您的计数包括重复项(请注意您的所有结果都是偶数)。

您的查询稍微修改后的版本应该会获得更好的结果(您应该使用适用于您的用例的任何方向性):

START n= NODE(5749,5750,5751,5752,5753,5754,5755,5756,5757,5758,5759,5760) 
MATCH p=(a)-[:KNOWS]->(n)-[:KNOWS]->(b)
OPTIONAL MATCH q=(a)-[:KNOWS]-(b)
RETURN Distinct n.name AS ID,COUNT(distinct p) as NR, COUNT(q) as BR;

OPTIONAL MATCH子句仍然没有指定任何方向性,因为我假设你真的想在这种情况下得到两个方向。但是,如果合适,您还应该在该子句中指定方向性。