我有一些节点n8
通过两个具有相同关系的实例连接到另一个节点n9
。这些实例仅因关系属性tag
而异。第一个关系实例有tag = foo
,第二个实例有tag = bar
(参见下面的代码)。
什么查询将从所有其他节点和关系中选择这两个节点?换句话说:如何使用不同的属性查询与相同关系的连接两个的两个节点?
create (n8 { id:'n8' })
create (n9 {id:'n9' })
MATCH (x),(y)
WHERE x.id = 'n8' AND y.id = 'n9'
CREATE (x)-[r:rl {tag:'foo'}]->(y)
RETURN r
MATCH (x),(y)
WHERE x.id = 'n8' AND y.id = 'n9'
CREATE (x)-[r:rl {tag:'bar'}]->(y)
RETURN r
答案 0 :(得分:1)
这应该可以解决问题。使用两个MATCH
子句,与WHERE
子句配对,允许关系的tag
成为可能列表中的任何值:
MATCH (n8)-[firstRel:r1]->(n9),
n8-[secondRel:r1]->n9
WHERE firstRel.tag in ['foo', 'bar'] AND
secondRel.tag in ['foo', 'bar'] AND
firstRel <> secondRel AND
firstRel.tag <> secondRel.tag
return firstRel, secondRel