Neo4j 密码可选匹配和限制

Neo4j 密码可选匹配和限制,neo4j,cypher,Neo4j,Cypher,我希望用一个查询来满足一个特定的模式,然后用从第一个查询的一个节点开始的另一个查询来扩展它。我相信我可以通过这样的查询做到这一点: MATCH (p)-[relationship:FOO]-(x) WITH p LIMIT 1 OPTIONAL MATCH (p)-[relationship2:BAR]-(x2) RETURN x2 LIMIT 200 匹配(:p)-[:关系]-(:x) 可选匹配(:p)-[:relationship2]-(:x2) 现在假设我在末尾加上一个限制(例如限制20

我希望用一个查询来满足一个特定的模式,然后用从第一个查询的一个节点开始的另一个查询来扩展它。我相信我可以通过这样的查询做到这一点:

MATCH (p)-[relationship:FOO]-(x)
WITH p LIMIT 1
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2)
RETURN x2 LIMIT 200
匹配(:p)-[:关系]-(:x) 可选匹配(:p)-[:relationship2]-(:x2)

现在假设我在末尾加上一个限制(例如限制200)。 返回的行是否会耗尽在使用新节点p移动到新的主查询之前满足的所有可选匹配?或者查询可能只任意返回可选匹配的子集吗?

1)您的密码模式语法似乎不好。对于节点(括号内),可选标识符位于第一位,每个可选标签位于冒号之后。对于关系(在方括号内),可选标识符位于第一位,类型位于冒号之后。我怀疑您的示例应该是这样的(因此可以使用
p
标识符将这两个模式联系在一起):

2) Cypher文档没有定义
的行为,将
限制到您所询问的详细程度,因此您应该精心设计Cypher,以获得尽可能接近您所需的合理结果。例如,如果要为
MATCH
模式找到的单个
p
返回多达200个
x2
值,可以使用如下方法:

MATCH (p)-[relationship:FOO]-(x)
WITH p LIMIT 1
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2)
RETURN x2 LIMIT 200

谢谢-我对密码查询很马虎,但你的观点是正确的。我喜欢你提出的极限解决方案。我想知道是否定义了极限行为,但没有记录。