尝试放松并在节点之间创建新关系 Neo4J C# 客户端
Trying to do Unwind and Create New Relationship Between Nodes Neo4J C# Client
我有一个节点列表 - 在代码中为 targetNodeList
,我有一个名为 sourceNode
(不同类型的节点)的节点。
列表和单节点已经存在于neo4j Db中
我想在它们与 targetNodeList
.
中的附加数据之间建立关系
TargetNodeList
是一个包装器,其中包含我想放入 Relationship
中的节点数据和关系数据
我没有完成代码,因为我不知道如何继续它,但这就是我尝试做的示例:
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
愿意提供任何帮助。
非常感谢高级。
所以我对您接收的节点以及它们之间的关系有点困惑,但希望下面的查询能让您走上正确的路线。
首先,匹配 sourceNode
然后 UNWIND
您的其他节点,准备创建。一旦你有两个节点 MATCH
ed 你然后 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();
我有一个节点列表 - 在代码中为 targetNodeList
,我有一个名为 sourceNode
(不同类型的节点)的节点。
列表和单节点已经存在于neo4j Db中
我想在它们与 targetNodeList
.
TargetNodeList
是一个包装器,其中包含我想放入 Relationship
我没有完成代码,因为我不知道如何继续它,但这就是我尝试做的示例:
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
愿意提供任何帮助。 非常感谢高级。
所以我对您接收的节点以及它们之间的关系有点困惑,但希望下面的查询能让您走上正确的路线。
首先,匹配 sourceNode
然后 UNWIND
您的其他节点,准备创建。一旦你有两个节点 MATCH
ed 你然后 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();