Neo4j WHERE子句中的存在子查询and或导致未知错误

Neo4j WHERE子句中的存在子查询and或导致未知错误,neo4j,cypher,Neo4j,Cypher,当我在WHERE子句中使用EXISTS{…}与或结合使用时,会发生UnknownError。这是一个错误还是我遗漏了什么 创建示例节点 CREATE (a:A { uuid:'uuid1', foo:true })-[:KNOWS]->(b:B { uuid:'uuid2' }) 示例查询 MATCH (a:A { uuid:'uuid1' }), (b:B { uuid:'uuid2' }) WHERE a.foo = TRUE OR EXISTS { MATCH (a)-[:KN

当我在
WHERE
子句中使用
EXISTS{…}
结合使用时,会发生
UnknownError
。这是一个错误还是我遗漏了什么

创建示例节点

CREATE (a:A { uuid:'uuid1', foo:true })-[:KNOWS]->(b:B { uuid:'uuid2' })
示例查询

MATCH (a:A { uuid:'uuid1' }),
(b:B { uuid:'uuid2' })
WHERE a.foo = TRUE
OR EXISTS {
  MATCH (a)-[:KNOWS]->(b)
}
RETURN a
错误


正如@InverseFalcon所指出的,这看起来确实像一个bug(或者至少是一个未记录的限制)

作为一种解决方法,由于子查询没有
WHERE
子句,因此您可以使用以下函数:

MATCH (a:A {uuid: 'uuid1'}), (b:B {uuid: 'uuid2'})
WHERE a.foo OR EXISTS((a)-[:KNOWS]->(b))
RETURN a

正如@InverseFalcon所指出的,这看起来确实像一个bug(或者至少是一个未记录的限制)

作为一种解决方法,由于子查询没有
WHERE
子句,因此您可以使用以下函数:

MATCH (a:A {uuid: 'uuid1'}), (b:B {uuid: 'uuid2'})
WHERE a.foo OR EXISTS((a)-[:KNOWS]->(b))
RETURN a

这确实是Neo4j存在子查询实现中的一个bug/疏忽。我现在已经实现了一个补丁,它将包含在即将发布的4.0版本中

这确实是Neo4j存在子查询实现中的一个缺陷/疏忽。我现在已经实现了一个补丁,它将包含在即将发布的4.0版本中

你使用的是哪个版本的Neo4j?我正在运行4.0.1 EnterpriseOkay,这里发生了一些事情。虽然匹配应该在括号中的模式之前,但我仍然得到相同的错误。这里可能有一个错误,与在同一WHERE子句中将存在子查询与其他谓词相结合有关。我会和一些人核实一下。我添加了匹配项。谢谢你使用的是哪个版本的Neo4j?我正在运行4.0.1 EnterpriseOkay,这里发生了一些事情。虽然匹配应该在括号中的模式之前,但我仍然得到相同的错误。这里可能有一个错误,与在同一WHERE子句中将存在子查询与其他谓词相结合有关。我会和一些人核实一下。我添加了匹配项。谢谢我在问题中提出了一个简化的问题。不幸的是,我的实际查询包含了一个
WHERE
子句。我应该报告错误还是提出一个特征请求?我会认为这是一个bug。我在我的问题中发布了一个简化的查询。不幸的是,我的实际查询包含了一个
WHERE
子句。我应该报告bug还是提出一个特性请求?我会认为这是一个bug。