gpt4 book ai didi

data-structures - 在 Neo4j 中创建独特的结构,它们的节点是另一个结构的一部分

转载 作者:行者123 更新时间:2023-12-04 21:12:46 27 4
gpt4 key购买 nike

假设我们有 n 个标签为 的节点:测试和一个名为 type 的独特属性。

UNWIND[{ type:"a" }, { type:"b" }, { type:"c" }, { type:"d" }] AS x
MERGE (t:Test { type: x.type })
RETURN t

看起来像这样

Base structure

现在介绍一个标签节点 :收藏 .此节点的目的是与 具有唯一的关系模式:测试节点。
MATCH (a:Test { type:"a" }),(b:Test { type:"b" })
CREATE UNIQUE (x:Collection)-[:HAS]->(a),(x:Collection)-[:HAS]->(b)
Return *

1st collection

当我尝试制作另一个独特的结构时,我面临的问题就开始出现了,就像前一个一样,但有一些节点是共同的。
MATCH (a:Test { type:"a" })
CREATE UNIQUE (x:Collection)-[:HAS]->(a)
RETURN *

预期的结果是标签 的另一个节点:收藏被创建并链接到 :测试 {type:"a"} 但实际结果是它匹配先前的数据结构并返回该数据结构而不是创建新的数据结构。

2nd collection

预期结果应该有 2 :收藏节点,一个链接到 类型:“a” ,另一个链接到 类型:“a”类型:“b” .

expected result

任何输入类型的输入都将不胜感激:D

最佳答案

来自 neo4j docs on CREATE UNIQUE :

CREATE UNIQUE is in the middle of MATCH and CREATE — it will match what it can, and create what is missing. CREATE UNIQUE will always make the least change possible to the graph — if it can use parts of the existing graph, it will.



您添加 Collection没有任何属性的节点。我想如果 CREATE UNIQUE找到一个 Collection节点,它将使用它。就是这样 CREATE UNIQUE应该可以工作。

所以如果你想要一个新的 Collection链接到一些 Test节点,您可以向节点添加一些独特的属性:
MATCH (a:Test { type:"a" })
CREATE UNIQUE (x:Collection {key: 'unique value'})-[:HAS]->(a)
RETURN *

或者在单独的步骤中创建它:
MATCH (a:Test { type:"a" })
CREATE (x:Collection)
CREATE (x)-[:HAS]->(a)
RETURN *

或使用 MERGE而不是 CREATE UNIQUE .

关于data-structures - 在 Neo4j 中创建独特的结构,它们的节点是另一个结构的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31023076/

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