在cypher查询中过滤模式

时间:2015-02-25 08:24:42

标签: neo4j cypher

我试图找到所有具有Status = Pending并且与BBB节点没有RELATIONSHIP_1关系的AAA节点。

我写了3个查询应该返回相同的计数(根据我的理解):



Match (a:AAA)-[tempRel]->(temp) where a.Status='Pending' AND TYPE(tempRel)<>'RELATIONSHIP_1' RETURN count(DISTINCT a)

Match (a:AAA)-[tempRel]->(temp:BBB) where a.Status='Pending' AND TYPE(tempRel)<>'RELATIONSHIP_1' RETURN count(DISTINCT a)


Match (a:AAA) where a.Status='Pending' AND NOT((a)-[:RELATIONSHIP_1]->(:BBB)) RETURN count(DISTINCT a)
&#13;
&#13;
&#13;

但所有查询都返回了不同的结果。

我在这里可能缺少什么想法?

此致

的Rahul

1 个答案:

答案 0 :(得分:2)

  1. 以下内容匹配与任何节点(带有任何标签或无标签)具有非AAA关系的待处理RELATIONSHIP_1。注意:匹配的待定AAA节点也可能具有单独的RELATIONSHIP_1关系。

    MATCH (a:AAA)-[tempRel]->(temp)
    WHERE a.Status='Pending' AND TYPE(tempRel)<>'RELATIONSHIP_1'
    RETURN count(DISTINCT a)
    
  2. 以下内容与任何与AAA节点具有非RELATIONSHIP_1关系的待定BBB匹配。注意:匹配的待定AAA节点可能与RELATIONSHIP_1节点具有单独的BBB关系。

    MATCH (a:AAA)-[tempRel]->(temp:BBB)
    WHERE a.Status='Pending' AND TYPE(tempRel)<>'RELATIONSHIP_1'
    RETURN count(DISTINCT a)
    
  3. 以下内容与任何与AAA节点没有任何RELATIONSHIP_1关系的待定BBB匹配。这包括完全没有任何关系的待定AAA个节点。

    MATCH (a:AAA)
    WHERE a.Status='Pending' AND NOT((a)-[:RELATIONSHIP_1]->(:BBB))
    RETURN count(DISTINCT a)