【问题标题】:Neo4j - merge all nodes that have same label(s) or property valueNeo4j - 合并具有相同标签或属性值的所有节点
【发布时间】:2016-02-11 00:56:22
【问题描述】:

在 Neo4j 中,如何通过单个属性(即 node1.property1=node2.property2)合并所有节点?或者,如何合并具有相同标签名称的所有节点?

manual 中,它针对各个节点讨论了这一点:

MATCH (person:Person)
MERGE (city:City { name: person.bornIn })
RETURN person.name, person.bornIn, city

创建了三个标记为 City 的节点,每个节点都包含一个名称 具有纽约、俄亥俄和新泽西价值的财产, 分别。请注意,即使 MATCH 子句导致三个 对于bornIn 属性,绑定节点的值为New York,只有一个 单个纽约节点(即名称为纽约的城市节点)是 创建的。由于纽约节点与第一个绑定节点不匹配, 它被创建。但是,新创建的纽约节点是匹配的,并且 为第二个和第三个绑定节点绑定。

结果

5 行 创建的节点:3 属性集:3 添加的标签:3

我的问题是我的节点标签是可变的,所以我必须为每个包含不同标签的节点执行上面的代码(上面示例中的标签是 Person)。在我的示例中,如果节点具有属性 value ,它们也将具有相同的标签。


更新: 所以,现在我不确定我最初的问题到底是不是我需要的(一旦事情变得更好,我会清理这个问题)。

我的问题是我有两个 node-edge-node 实例

(node1) -[relation1]-> (node2)

(node2) -[relation2]->(node3)

其中 node1、node2 等是每个 node-edge-node 的标签。请注意,node2 可能在不同的实例中具有一些不同的属性值,并且可能有许多带有标签 node2 的节点,每个节点只有一个关系,如上所示。但是,某些属性将始终相同(与标签名称相关的唯一标识符)。

话虽如此,我想运行查询:

MATCH (n1: node1) -[r1: relation1]->
(n2: node2) -[r2: relation2]-> (n3: node3)
RETURN n1, r1, n2, r2, n3

但是由于有许多带有标签 node2 的节点但它们都没有连接(或合并?),所以上面的查询什么也不返回。那么,如何合并具有相同标签的所有节点,以便查询按我的意愿工作?

【问题讨论】:

  • 当您说合并所有节点时,它们是具有相同或不同参数的节点吗?能举个真实的例子吗?
  • Merge 是 Match 和 Create 的结合,用于不创建重复节点。我不确定你在说什么
  • @spwallace:你没有完成你编辑的问题。
  • 对不起,我对我到底想要什么有点困惑,但我现在更新了这个问题,所以(希望)更清楚我的确切问题。
  • 您能否详细说明您将如何决定是否应该合并 2 个 node2 节点?

标签: merge neo4j cypher


【解决方案1】:

您可以调整手册中的查询,使其适用于具有指定集合标签的任何节点(例如,['Person'、'Foo'、'Bar'])。 (下面的查询假定所有此类节点都具有namebornIn 属性。)

MATCH (person)
WHERE ANY(x IN LABELS(person) WHERE x IN ['Person', 'Foo', 'Bar'])
MERGE (city:City { name: person.bornIn })
RETURN person.name, person.bornIn, city;

可以调整上面的查询以传递parameter 中的标签列表,如果有多组标签,效率会更高。

另一种做同样事情的方法,如果标签集没有改变:

MATCH (person)
WHERE person:Person OR person:Foo OR person:Bar
MERGE (city:City { name: person.bornIn })
RETURN person.name, person.bornIn, city

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    相关资源
    最近更新 更多