如何在neo4j中合并时更新节点属性



我想将我的联系人与现有的可用联系人节点合并,但是我面临一个小问题。

我想只在name属性不存在的情况下替换name如果存在,我不想碰它,就让它存在吧如果属性是null id空字符串那么我想用新的name属性

来替换它任何想法如何在密码我给出了一个示例代码下面,我正在尝试与我最好的理解

MATCH (me:User {id: $id})
UNWIND $contacts AS c
FOREACH (contact in c |
MERGE (knows:User {number:contact.number}) 
MERGE (me)-[:KNOWS]->(knows)
SET
knows.name = coalesce(knows.name, contact.name),
knows.email = coalesce(knows.email, contact.email),
knows.id =  coalesce(knows.id, contact.id),
knows.anonymous = coalesce(knows.anonymous, randomUUID()),
)
RETURN knows
const session = MyDriver.session();
const result = await session.run(cypher, { id, contacts: myConctacts });
session.close();

您可以在不存在属性的情况下提供值时使用coalesce,例如:

SET knows.name = coalesce(knows.name, contact.name)

参考:https://neo4j.com/docs/cypher-manual/current/functions/scalar/#functions-coalesce

最新更新