2017-02-21 67 views
0

我正在寻找满足特定模式的查询,然后用第一个查询从其中一个节点开始的另一个查询来扩充它。我相信我能做到这一点与这样的查询:密码可选匹配和限制

比赛(:P) - (:X) 可选匹配(:P) - - [关系] [:relationship2] - (:X2)

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

回答

0

1)您的Cypher模式语法看起来很糟糕。对于节点(在括号内),可选标识符首先出现,每个可选标签出现在冒号后面。对于关系(在方括号内),可选标识符首先出现,类型出现在冒号后面。我怀疑你的榜样应该看起来是这样的(这样p标识符可用于扳平2种模式一起):

MATCH (p)-[relationship:FOO]-(x) 
OPTIONAL MATCH (p)-[relationship2:BAR]-(x2) 
... 

2)的Cypher文档没有定义的水平的LIMIT行为你所问的细节,所以你应该制作你的Cypher,以得到一个结果,尽可能接近你想要的。例如,如果你想返回最多200个x2值一pMATCH模式中,你可以使用这样的事情:

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

谢谢 - 我被草率与CYPHER查询,但你点是正确的。我喜欢你放在那里的解决方案。我想知道限制的行为是否已定义,但没有记录。 –