将 2 个节点之间的多个关系转换为具有权重的单个关系
Convert multiple relationships between 2 nodes to a single one with weight
我有下图,描述了文档中汽车品牌的共现:
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);
但这不是预期的结果:
如果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)
来指定方向。查询的其余部分是正确的。
我有下图,描述了文档中汽车品牌的共现:
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);
但这不是预期的结果:
如果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)
来指定方向。查询的其余部分是正确的。