gpt4 book ai didi

neo4j - Q : How to include a WHERE clause in a MERGE statement in Neo4j

转载 作者:行者123 更新时间:2023-12-03 16:42:40 28 4
gpt4 key购买 nike

我有一个对象,它具有唯一但不是必需的属性,即 Facebook ID。如果我插入另一个具有相同名称的对象并且有一个没有 Facebook ID 的对象,那么我认为它们是相同的。如果有一个名称相同但 Facebook ID 不同的对象,那么我认为它们是不同的并创建一个新对象。

我已经尝试了基于 Cypher 文档的各种语句,但无法使它们中的任何一个成为有效的语法。

虽然这个例子无效,但我认为它说明了我正在尝试做的事情:

MERGE (t:Thing {name: 'My Not Always Unique Name'})
WHERE EXISTS(t.facebook_id) AND t.facebook_id <> '111111111'
ON CREATE SET t.name = 'My Not Always Unique Name',
t.facebook_id = '111111111',
t.another_property = 'blah'
ON MATCH SET t.another_property = 'blah'
RETURN t;

最佳答案

我相信我对此有一个答案,这取决于我为 id 属性设置的 UUID。

OPTIONAL MATCH (t:Thing {name: 'My Not Always Unique Name'}) WHERE t.facebook_id IS NULL OR t.facebook_id = '1111111' 
WITH t
MERGE (s:Thing {id: COALESCE(t.id, 'e8344f24-faff-443a-ac48-b757381eddb8')})
ON MATCH SET s.name = 'My Not Always Unique Name', s.facebook_id = '1111111'
ON CREATE SET s.name = 'My Not Always Unique Name', s.facebook_id = '1111111' RETURN s;

不确定这是否是最好的方法,但它对我有用。我将把这个开放一点,看看是否有人有更好的答案。

一个负面影响是,如果我插入的内容没有 facebook_id,则需要单独的合并语句。

关于neo4j - Q : How to include a WHERE clause in a MERGE statement in Neo4j,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661577/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com