Neo4j-不存在的地方

Neo4j-不存在的地方,neo4j,cypher,Neo4j,Cypher,今天,我正在编写一些示例查询,我偶然发现了一些东西 假设我有以下数据集: 如果我提出疑问: MATCH (c:company)-[:sells]->(p:product)<-[:taxes]-(t:tax) WHERE NOT EXISTS { MATCH (p)<-[:taxes]-(t) WHERE t.name = 'tax2' } RETURN c,p MATCH (c:company)-[:sells]->(p:product)<-[:

今天,我正在编写一些示例查询,我偶然发现了一些东西

假设我有以下数据集:

如果我提出疑问:

MATCH (c:company)-[:sells]->(p:product)<-[:taxes]-(t:tax)
WHERE NOT EXISTS {
    MATCH (p)<-[:taxes]-(t)
    WHERE t.name = 'tax2'
}
RETURN c,p
MATCH (c:company)-[:sells]->(p:product)<-[:taxes]-(t:tax)
WHERE NOT EXISTS {
    MATCH (p)<-[:taxes]-(t2)
    WHERE t2.name = 'tax2'
}
RETURN c,p,t

MATCH(c:company)-[:sells]->(p:product)由于第一个查询的外部
MATCH
子句绑定了
p
t
值,因此内部
MATCH
子句无法找到与
p
t
值不同的任何内容。换句话说,这个简单的查询在逻辑上是等价的:

MATCH (c:company)-[:sells]->(p:product)<-[:taxes]-(t:tax)
WHERE t.name <> 'tax2'
RETURN c,p

MATCH(c:company)-[:sells]->(p:product)由于第一个查询的外部
MATCH
子句绑定了
p
t
值,因此内部
MATCH
子句无法找到与
p
t
值不同的任何内容。换句话说,这个简单的查询在逻辑上是等价的:

MATCH (c:company)-[:sells]->(p:product)<-[:taxes]-(t:tax)
WHERE t.name <> 'tax2'
RETURN c,p
匹配(c:公司)-[:销售]->(p:产品)