【问题标题】:Convert multiple relationships between 2 nodes to a single one with weight将 2 个节点之间的多个关系转换为具有权重的单个关系
【发布时间】:2018-08-06 17:47:36
【问题描述】:

我有以下图表,描述了文档中汽车品牌的共现:

CREATE 
  (`0` :Car {value:"Ford"})
, (`1` :Car {value:"Subaru"})
, (`2` :Car {value:"VW"})
, (`0`)-[:`DOCUMENT` {value:"DOC-1"}]->(`1`)
, (`0`)-[:`DOCUMENT` {value:"DOC-2"}]->(`1`)
, (`1`)-[:`DOCUMENT` {value:"DOC-3"}]->(`2`);

如果两个节点之间有很多关系-出于可视化的目的-我想将其替换为单个节点并计算权重:

VW ---1--- Subaru ---2--- Ford

如何做到这一点?

我尝试了以下查询:

MATCH (n1)-[r1:DOCUMENT]-(n2)
RETURN n1, n2, apoc.create.vRelationship(n1, 'WEIGHT', {weight:count(r1)}, n2);

但这不是预期的结果:

【问题讨论】:

    标签: neo4j cypher neo4j-apoc


    【解决方案1】:

    如果MATCH (n1)-[r1:DOCUMENT]-(n2) RETURN *;中没有指定关系方向,则每个关系返回两次

    ╒══════════════════╤══════════════════╤═════════════════╕
    │"n1"              │"n2"              │"r1"             │
    ╞══════════════════╪══════════════════╪═════════════════╡
    │{"value":"Ford"}  │{"value":"Subaru"}│{"value":"DOC-1"}│
    ├──────────────────┼──────────────────┼─────────────────┤
    │{"value":"Ford"}  │{"value":"Subaru"}│{"value":"DOC-2"}│
    ├──────────────────┼──────────────────┼─────────────────┤
    │{"value":"Subaru"}│{"value":"Ford"}  │{"value":"DOC-1"}│
    ├──────────────────┼──────────────────┼─────────────────┤
    │{"value":"Subaru"}│{"value":"Ford"}  │{"value":"DOC-2"}│
    ├──────────────────┼──────────────────┼─────────────────┤
    │{"value":"Subaru"}│{"value":"VW"}    │{"value":"DOC-3"}│
    ├──────────────────┼──────────────────┼─────────────────┤
    │{"value":"VW"}    │{"value":"Subaru"}│{"value":"DOC-3"}│
    └──────────────────┴──────────────────┴─────────────────┘
    

    通过将MATCH 子句更改为MATCH (n1)-[r1:DOCUMENT]->(n2)MATCH (n1)<-[r1:DOCUMENT]-(n2) 来指定方向。查询的其余部分是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2018-04-09
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多