我有一个节点列表 - 代码为targetNodeList
,我有一个名为sourceNode
的节点(不同类型的节点)。
列表和单个节点已经存在于neo4j Db中
我希望通过targetNodeList
内的其他数据建立它们之间的关系。
TargetNodeList
是一个包装器,它包含我想要放在关系中的节点数据和关系数据
我没有设法完成代码,因为我不知道如何继续它,但那是我试图做的样本:
public void CreateRelationshipBetweenNodes(NodeType sourceNode,List<TargetNodes> targetNodeList,int solutionId)
{
graphClient.Cypher
.Unwind(targetNodeList, "singleNode")
.Match("(firstNode:FirstType)", "(secondNode:SecondType)")
.Where(" firstNode.Id = otherNode:FirstType{Id:innerNode.Id}")
.AndWhere(" secondNode.Id = node:SecondType {Id:singleNode.Id}")
.WithParams(new { innerNode = sourceNode})
.Create("(firstNode)-[msg:SENT {solution}]->(secondNode)")
.WithParam("solution", solutionId).ExecuteWithoutResults();
}
它不起作用,我想要添加到singleNode
的关系中的更多数据,例如:singleNode.Score
会恭喜任何帮助。 非常感谢先进。
答案 0 :(得分:0)
所以我对你正在接收的节点以及它们之间的关系有点混淆,但希望下面的查询能让你找到正确的路线。
首先,匹配sourceNode
然后UNWIND
其他节点,准备进行创建。一旦你有两个节点MATCH
编辑你然后CREATE
关系(PS。如果你不想要重复,你可能需要MERGE
) - 我设置Id
关系的属性 - 你需要提供一个属性名称,否则它将无法工作!
graphClient.Cypher
.Match("(sourceNode:SourceNodeType {Id:sourceNode.Id})")
.Unwind(targetNodeList, "singleNode")
.Match("(targetNodeInDb:TargetNode {Id:targetNode.Id})")
.Create("(sourceNode)-[:SENT {Id:{solutionIdParam}}]->(targetNode)")
.WithParam("solutionIdParam", solutionId)
.ExecuteWithoutResults();