【问题标题】:Neo4j: find network of nodes of type A connected to more than one of type 2Neo4j:查找连接到多个类型 2 的类型 A 节点的网络
【发布时间】:2019-04-03 07:08:39
【问题描述】:

我的网络由 A 类型的节点组组成,它们之间有多种关系(不同类型,但不重要 ftm)。其中一些节点也可能与类型 B 的节点有关系。 现在我正在寻找与多个 B 类型连接的 A 类型节点组。 Neo4j 甚至可以做到这一点吗?

【问题讨论】:

  • “我正在寻找类型 A 的节点组”您的意思是“任何类型 A 的节点与多个 B 类型节点连接”吗?还是“一组 A 类节点(意味着它们将相互连接)也连接(作为一个组)到多个 B 类节点”?
  • 我正在寻找作为一个组连接到多个 B 类型节点的 A 类型节点
  • 所以我认为存在一些类型为 :A 的节点(通过 X 跳数?单跳?)连接到其他 :A 节点,而不是其他 :A 节点?
  • 您希望返回值中的每一行包含什么? :A 节点列表?
  • 确实,这就是我们的想法

标签: neo4j


【解决方案1】:

示例模型

为了方便可能的进一步答案和解决方案,我记下了我的图表创建声明:

CREATE
  (a1:TypeA {name: 'A1'})-[:REFERS]->(a2:TypeA {name: 'A2'}),
  (a1)-[:REFERS]->(a3:TypeA {name: 'A3'}),
  (a2)-[:REFERS]->(a4:TypeA {name: 'A4'}),
  (a3)-[:REFERS]->(a4),
  (c1:TypeC {name: 'C1'})-[:REFERS]->(a1),
  (c1)-[:REFERS]->(a2),
  (d1:TypeD {name: 'D1'})-[:REFERS]->(a1),
  (d1)-[:REFERS]->(a3),
  (b1:TypeB {name: 'B1'})-[:REFERS]->(a3),
  (b1)-[:REFERS]->(a4),
  (b2:TypeB {name: 'B2'})-[:REFERS]->(a4),
  (e1:TypeE {name: 'E1'})-[:REFERS]->(a3),
  (e1)-[:REFERS]->(b1);

解决方案

第二行检测您的TypeA 网络。基于此,第三行标识所有连接的TypeBs,在第 5 行计数并在第 6 行过滤。

MATCH
  networkA = (startNode:TypeA)-[:REFERS]-(:TypeA)-[:REFERS]-(:TypeA)-[:REFERS]-(:TypeA)-[:REFERS]-(:TypeA),
  (startNode)-[:REFERS]-(nodeB:TypeB)
WITH
  nodes( networkA) AS networkANodes, count(nodeB) AS nodeBAmount
WITH networkANodes WHERE nodeBAmount >= 2
RETURN
  networkANodes;

结果

╒══════════════════════════════════════════════════════════════════════╕
│"networkANodes"                                                       │
╞══════════════════════════════════════════════════════════════════════╡
│[{"name":"A4"},{"name":"A3"},{"name":"A1"},{"name":"A2"},{"name":"A4"}│
│]                                                                     │
├──────────────────────────────────────────────────────────────────────┤
│[{"name":"A4"},{"name":"A2"},{"name":"A1"},{"name":"A3"},{"name":"A4"}│
│]                                                                     │
└──────────────────────────────────────────────────────────────────────┘

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    相关资源
    最近更新 更多