Neo4j:替换现有节点

Neo4j : Replace Existing Node

我正在尝试使用 Neo4JClient 替换现有节点。我对 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;
    }

您应该删除 OnMatch() 调用,因为您要在新创建的节点和现有节点上设置属性。

        vsNode = DBUtils.DBService.Cypher
            .Merge($"(evt:VitalSignEvent {{ItemId: {mergedEvent.ItemId}, DateObserved: {mergedEvent.DateObserved} }})")
            .Set("evt = $merged")
            .WithParam("merged", mergedEvent)
            .Return(evt => evt.As<Node<VitalSignEvent>>())
            .Results.FirstOrDefault();