按字段查找图节点,更新所有其他字段

时间:2015-05-19 18:08:20

标签: neo4j cypher neo4jclient

我有一个Neo4J图形数据库,我想在其中存储用户和它们之间的关系。

我希望能够使用包含在.Net用户对象中的数据更新我通过GUID找到它们的用户节点。理想情况下,我想知道如何在Neo4JClient中执行此操作,但即使是普通的Cypher查询也可以。

理想情况下,我想使用整个对象,不知道修改了哪些属性,并替换所有属性 - 包括数组属性 - 不同于下面知道要更新PhoneNumber的示例

这样的事情:

<pymongo.command_cursor.CommandCursor object at 0x02ADD6B0>

上述代码的问题是MATCH (n:`User` {Id:'24d03ce7-8d23-4dc3-a13b-cffc0c7ce0d8'}) MERGE (n {PhoneNumber: '123-123-1234'}) RETURN n 重新定义了MERGE

我收到此错误:

n

1 个答案:

答案 0 :(得分:1)

  1. 如果您只想完全替换所有 现有节点的属性,请不要使用MERGE。您应该只使用MATCHSET所有属性。像这样:

    MATCH (n:`User` {Id:'24d03ce7-8d23-4dc3-a13b-cffc0c7ce0d8'}) 
    SET n = {PhoneNumber: '123-123-1234', Age: 32}
    RETURN n;
    
  2. 另一方面,如果要创建新节点,如果尚未存在具有指定Id的节点,并且您还希望完全替换新节点或现有节点的所有属性,你可以这样做:

    MERGE (n:`User` {Id:'24d03ce7-8d23-4dc3-a13b-cffc0c7ce0d8'}) 
    SET n = {PhoneNumber: '123-123-1234', Age: 32}
    RETURN n;
    
  3. 注意:在上述查询中,在添加新属性之前,将删除n的所有现有属性。此外,n子句中分配给SET的映射可以作为参数传递给查询(因此不需要硬编码)。