Neo4j如何使用单个节点创建多个关系?

Neo4j如何使用单个节点创建多个关系?,neo4j,cypher,Neo4j,Cypher,现在,我正在创建一对一关系,使用下面的Cypher查询 @Query("MATCH (R:`User`{uuid:{uuid}}), (L:`Role`{uuid:{roleUuid}}) CREATE (R)-[r:`FILTER_ON`]->(L);") 现在我的问题是我有多个roleUuid像roleUuid1,roleUuid2,roleUuid3等等现在我想用多个roleUuid与用户(uuid)建立关系 如何在Cypher查询中执行此操作?使用包含角色UUID列表的参数Rol

现在,我正在创建一对一关系,使用下面的Cypher查询

@Query("MATCH (R:`User`{uuid:{uuid}}), (L:`Role`{uuid:{roleUuid}}) CREATE (R)-[r:`FILTER_ON`]->(L);")
现在我的问题是我有多个
roleUuid
roleUuid1
roleUuid2
roleUuid3
等等现在我想用多个
roleUuid
与用户(
uuid
)建立关系


如何在Cypher查询中执行此操作?

使用包含角色UUID列表的参数
RoleUIDS
,您可以发出

MATCH (R:`User`{uuid:{uuid}}), (L:`Role`)
WHERE L.uuid IN {roleUuids}
CREATE (R)-[r:`FILTER_ON`]->(L)
或者如果您在
uuid
属性上有索引:

UNWIND {roleUuids} AS roleUuid
MATCH (R:`User`{uuid:{uuid}}), (L:`Role`{uuid:roleUuid})
CREATE (R)-[r:`FILTER_ON`]->(L)

一句话:如果您使用的是最新的Neo4j版本,我建议您使用
$parameter
语法而不是
{parameter}
语法来提高可读性。

使用
IN
如果我们能够实现这一点,为什么要使用
索引呢?如果您创建了索引,第二个变体的性能将显著提高。根据数据库的大小,这可能没有多大区别-如果只有几千个节点,一个普通的(无索引)数据库就可以正常工作。因此,“IN”将一次与单个节点建立多个关系,对吗?在我的例子中,还有一件事是列表,所以它不会产生任何问题。“那么‘IN’将一次成功地与单个节点建立多个关系?”答案中的两个解决方案是相同的。它们都将使用一个查询创建多个关系。