我想在NEO4j中的现有节点之间创建许多关系。在编译时或运行时之前不知道这些关系,因此我将使用变量作为查询的[rel:" RELATIONSHIP_TO]部分。我在SO上看到过类似的问题Creating Neo4j Relationships in java:
RelationshipType relType = DynamicRelationshipType.withName(rel);
graphDb.createNode().createRelationshipTo(graphDb.createNode(), relType);
然而,那是两年前,文档现在说不推荐使用 DynamicRelationshipType 。该文档还谈到了使用Java" enums" RelationshipType ,我不相信会对我的情况有所帮助。我想这样做:
node1.createRelationshipTo(node2,relType)
其中relType是一个变量。我怎样才能做到这一点?任何帮助表示赞赏。我的项目是使用最新的Neo4jDB的Nodejs和Javascript。
另外我还想知道如何将变量用于"键"在关系和节点的属性赋值中?
答案 0 :(得分:1)
您可以使用apoc
中的create.relationship
程序:
CALL apoc.create.relationship(person1,'KNOWS',{key:value,…}, person2)
<强> UPD 强>:
MERGE (person1:Person {name:1})
MERGE (person2:Person {name:2})
WITH 'KNOWS' as relType, person1, person2
CALL apoc.create.relationship(person1, relType, null, person2) YIELD rel
RETURN rel