我希望用查询来满足特定模式,然后使用从第一个查询中的一个节点开始的另一个查询来扩充它。我相信我可以通过这样的查询来做到这一点:
匹配(:p) - [:关系] - (:x) 可选匹配(:p) - [:relationship2] - (:x2)
现在假设我在结尾处设置了限制(例如,限制200)。 在使用新节点p进入新的主查询之前,返回的行是否会耗尽所有满足的可选匹配项?或者查询是否可以任意返回可选匹配的子集?
答案 0 :(得分:0)
1)您的Cypher模式语法似乎很糟糕。对于节点(在括号内),首先是可选标识符,每个可选标签都在冒号后面。对于关系(在方括号内),可选标识符首先出现,类型出现在冒号之后。我怀疑你的例子应该看起来像这样(以便p
标识符可用于将2个模式绑定在一起):
MATCH (p)-[relationship:FOO]-(x)
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2)
...
2)Cypher文档没有将LIMIT
的行为定义为您所询问的详细程度,因此您应该制作Cypher以获得与您想要的结果尽可能接近的结果。例如,如果您想为x2
模式找到的单 p
返回最多200个MATCH
值,则可以使用以下内容:< / p>
MATCH (p)-[relationship:FOO]-(x)
WITH p LIMIT 1
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2)
RETURN x2 LIMIT 200