我正在尝试创建一个指向它的挤压的单个节点,来自下面的查询结果:
MATCH (e:EXP)-[s:Was_selected]->
(g:GNE)-[p:Has_interaction]-(h:GNE)-
[:Was_clusterized]-(c:CLUSTER)-
[:Was_represented]-(b:BP)
WHERE p.combined_score > 800
WITH DISTINCT g, COUNT(distinct h) AS score WHERE score > 50
CREATE (g)-[:AS_HUBS]->(HUBS)
RETURN g
但结果是每个g(GNE)的一个类型为HUB的节点。
感谢您的帮助。
答案 0 :(得分:1)
您的查询非常复杂,所以让我们为实验创建一个更简单的示例:
CREATE
(a1:A {name: 'a1'}),
(a2:A {name: 'a2'})
要在两个节点之间创建集线器,我们使用以下查询:
MATCH (a:A)
WITH collect(a) AS as
CREATE (hub:Hub {name: 'hub'})
WITH as, hub
UNWIND as AS a
CREATE (hub)<-[:AS_HUBS]-(a)
RETURN *
这将为所有Hub
个节点创建单个A
。说明:我们collect
将结果添加到单行(到列表中),创建单个Hub
,然后UNWIND
该行并为每个A
节点创建关系。
如果我们根据您的用例调整方法,我们会得到以下查询:
MATCH (e:EXP)-[s:Was_selected]->
(g:GNE)-[p:Has_interaction]-(h:GNE)-
[:Was_clusterized]-(c:CLUSTER)-
[:Was_represented]-(b:BP)
WHERE p.combined_score > 800
WITH DISTINCT g, COUNT(distinct h) AS score
WHERE score > 50
WITH collect(g) AS gs
CREATE (hub:Hub {name: 'hub'})
WITH gs, hub
UNWIND gs AS g
CREATE (g)-[:AS_HUBS]->(hub)
RETURN *