0
我试图用Neo4JClient替换现有的节点。我对Neo4j还是比较新鲜,所以我不确定我是否正确地做到了这一点。查询应该将现有节点上的所有属性更新为新节点的属性。Neo4j:替换现有节点
public static Node<VitalSignEvent> MergeVitalSignEvent(VitalSignEvent mergedEvent)
{
try
{
vsNode = DBUtils.DBService.Cypher
.Merge($"(evt:VitalSignEvent {{ItemId: {mergedEvent.ItemId}, DateObserved: {mergedEvent.DateObserved} }})")
.OnMatch()
.Set("evt = merged")
.WithParam("merged", mergedEvent)
.Return(evt => evt.As<Node<VitalSignEvent>>())
.Results.FirstOrDefault();
}
catch (Exception e)
{
LogException(nameof(MergeVitalSignEvent), e);
}
return vsNode;
}
目前尚不清楚你正在尝试做什么。你能提供更多细节吗?只有当具有相同模式的现有节点尚不存在时,您的代码才会创建新节点,并返回第一个现有匹配节点或新节点。 “更新”和“替换”都没有完成。 – cybersam
@cybersam希望它更新现有节点。如果任何属性不同,它应该得到新节点的值。 –
但还没有“新”节点。如果匹配节点尚不存在,您是否尝试创建新节点?你是否想使用'mergedEvent.ItemId'作为查找现有节点的“键”,或者是否要将'mergedEvent.ItemId'和'mergedEvent.DateObserved'一起用作关键字? – cybersam