neo4j - Neo4j:查找连接到多个类型 2 的 A 类型节点的网络
问题描述
我的网络由 A 类型的节点组组成,它们之间有多种关系(不同类型,但不重要 ftm)。其中一些节点也可能与 B 类型的节点有关系。现在我正在寻找与多个 B 类型连接的 A 类型节点组。Neo4j 甚至可能吗?
解决方案
示例模型
为了便于可能的进一步答案和解决方案,我记下我的图表创建声明:
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
网络。基于此,第三行标识所有连接TypeB
的 s,在第 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"}│
│] │
└──────────────────────────────────────────────────────────────────────┘
推荐阅读
- sql - 使一列自动,以便每次输入新记录时它可以增加一
- r - R 的控制流与多个 if 语句的行为不符
- linux-kernel - 如何在 beaglebone 自定义 linux 上自动连接 wifi
- promise - 使用 esri/request 触发的多个 XHR 请求在使用 dojo/promise/all 处理时返回延迟
- php - PHP img src 不是回显
- javascript - Js删除类不起作用
- bash - 作用域如何对局部变量起作用?
- android - Horizontal RecyclerView - 列出从中心排列的项目
- c++ - 标识符“HANDLE”未定义
- java - 获取相关的 getter/setter 字段(成员变量)