构造cypher以在Neo4j中添加许多关系

时间:2014-10-15 11:57:17

标签: neo4j cypher

我想添加与现有节点的关系,所以我做了这样的密码:

start n1=node:node_auto_index(id='0'),n2=node:node_auto_index(id='1') create n1-[:{quantity:1}]->n2;

start n1=node:node_auto_index(id='1'),n2=node:node_auto_index(id='2') create n1-[:USES_COMPONENT{quantity:7}]->n2;

start n1=node:node_auto_index(id='1'),n2=node:node_auto_index(id='3') create n1-[:USES_COMPONENT{quantity:11}]->n2;

start n1=node:node_auto_index(id='1'),n2=node:node_auto_index(id='4') create n1-[:USES_COMPONENT{quantity:14}]->n2;

但收到了很多错误消息(error around> {quantity)。当我只添加其中一个时,会显示[[ Index node_auto_index does not exist ]]

2 个答案:

答案 0 :(得分:1)

您无法创建没有类型的关系。如果您在第一个语句中添加类型,例如与其他人一样,USES_COMPONENT应解决错误。您可以在不使用其类型的情况下匹配关系,但无法在没有类型的情况下创建关系。如果你想匹配它没有类型,那么你还需要删除:,即

n1-[{quantity:1}]->n2

是一种有效的模式。

关于索引,您如何配置node_auto_index

答案 1 :(得分:1)

错误消息表示您没有该名称的索引。通常你可以通过enabling node auto-indexing解决这个问题 - 这没关系,但是有更好的方法来编写你的查询:

MATCH (n0), (n1), (n2), (n3), (n4)
WHERE id(n0)=0 AND id(n1)=1 AND id(n2)=2 AND id(n3)=3 AND id(n4)=4
CREATE (n0)-[:USES_COMPONENT { quantity: 1 }]->(n1),
       (n1)-[:USES_COMPONENT { quantity: 7 }]->(n2),
       (n1)-[:USES_COMPONENT { quantity: 11}]->(n3),
       (n1)-[:USES_COMPONENT { quantity: 14}]->(n4)
RETURN n0, n1, n2, n3, n4;

使用MATCHWHERE子句来查找特定节点(通常)会更容易。另请注意,您可以使用单个查询创建任意数量的新关系。

在使用它之前仔细检查此查询 - 您以混乱的方式重新使用n2变量,因此您需要确保为您获得绑定到正确节点的正确ID。