我有一个简单的社交流,其中很少有节点和关系如下所示:
row 1: (a) -> (stream) -> (d)
row 2: (a) -> (stream) -> (d) -> (source)
基本上我想拉两行但是对源的类型有一些限制,例如我目前使用它:
MATCH (a)-[]->(stream)-[]->(d)
OPTIONAL MATCH (d)-[]->(source)
WHERE source.x = 3
RETURN stream, d, source
这很有效。几乎。当source.x = 3时,我得到两行。哪个是完美的。但是当source.x!= 3时,我希望查询忽略第二行,但由于可选匹配,行仍然会出现。
When source.x = 3
row 1. stream, d, null
row 2. stream, d, source
When source.x != 3
row 1. stream, d, null
row 2. stream, d, null
当source.x!= 3时,我希望查询忽略第二行。因为它包含(源)节点但不包含我们想要的节点。输出应如下所示:
row 1. stream, d, null
基本上类似于if(source)不存在的行显示行..如果确实存在,仅在source.x = 3时显示行
答案 0 :(得分:1)
您可以使用MATCH (me:User {name:'me'})-[:LIKES]->(transport)
OPTIONAL MATCH (transport)-[:HAS_DRIVER]->(driver:Driver {name:'Anne'})
WITH me, transport, driver
WHERE (NOT (transport)-[:HAS_DRIVER]->()) OR (NOT driver IS NULL)
RETURN me, transport, driver
和select_tag 'date_month', options_for_select((1..12).collect{ |i| "%02d" % i })
子句管道结果进行过滤,然后再返回:
{{1}}