考虑这个例子:我有一个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)
然而,它似乎不起作用。
感谢。
答案 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时!