Neo4j中的同时出现

时间:2016-03-31 08:53:17

标签: neo4j

我有一个简单的网络,其中每个节点都有duiname属性,每个关系都有yearfreq(频率)属性。

例如,如果我希望为dui = 'D000003'节点创建自我网络,我使用以下查询(请注意我使用WHERE子句限制结果数量):

MATCH (n {dui:'D000003'})<-[r]->(m) WHERE r.year = 2005 AND r.freq > 20 RETURN n.dui, m.dui;

,相应的结果是:

+-----------------------+
| n.dui     | m.dui     |
+-----------------------+
| "D000003" | "D015995" |
| "D000003" | "D015169" |
| "D000003" | "D013552" |
| "D000003" | "D008460" |
| "D000003" | "D006801" |
| "D000003" | "D005516" |
| "D000003" | "D005506" |
| "D000003" | "D002418" |
| "D000003" | "D002417" |
| "D000003" | "D000818" |
+-----------------------+

现在我想知道如何获得m.dui列下列出的节点之间的所有关系;换句话说,我希望为这些节点生成共现图。

1 个答案:

答案 0 :(得分:0)

这应该有效:

MATCH (n { dui:'D000003' })-[r]-(m)
WHERE r.year = 2005 AND r.freq > 20
MATCH (n)-[rel]-(m)
RETURN n.dui, m.dui, COLLECT(rel) AS rels;

请注意,我将您的奇怪(并且,我相信,未记录的)<-[r]->语法更改为-[r]-,这意味着方向性无关紧要。