如何在一个查询中为单个节点添加多个关系

时间:2017-03-18 14:33:16

标签: neo4j

考虑这个例子:我有一个Author节点和几个Book节点。我想在单个cypher Query语句中创建Author和几个Book节点之间的WROTE关系。此外,我必须查找作者和所有Book节点的节点的唯一方法是通过其节点ID。

这是我试过的:

MATCH (a:Author) WHERE id(a) = '31' 
MATCH (b0:Book) WHERE id(b0) = '32' 
MATCH (b1:Book) WHERE id(b1) = '33' 
CREATE  (b0)<-[:WROTE {order : '0'}]-(a) 
CREATE  (b1)<-[:WROTE {order : '1'}]-(a)  

然而,它似乎不起作用。

感谢。

2 个答案:

答案 0 :(得分:3)

Neo4js native id存储为数字,因此不要按字符串匹配。 Cypher还有IN子句,允许您匹配数组,因此您可以简化查询到此

MATCH (a:Author) where id(a)=31
MATCH (b:Book) where id(b) in [32,33]
CREATE (a)-[:WROTE]->(b)

答案 1 :(得分:1)

发现问题是我不应该使用&#39;匹配节点ID时!