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