【发布时间】:2018-02-20 18:57:52
【问题描述】:
大家好,我正在尝试编写一个 neo4j 查询来获得多个跃点。
目前我的架构是 作者 - fname,lname & 论文 - 标题
关系:作者 -> 写过 -> 论文
MATCH (a:Author)-[:WROTE]->(p:Paper)
WITH a as auth1, count(p.title) as count1
MATCH (auth1) -[:WROTE *1]->(p2:Paper),
(auth2)-[:WROTE *1]->(p2)
WHERE count1 > 7
RETURN DISTINCT auth1.fname, auth1.lname, auth2.fname, auth2.lname
我要做的是找到所有与我的作者相关的人,他们撰写的论文最多 - 首先是 1 跳,然后是 2 跳等。我知道论文最多的作者写了 8 篇,因此我的计数 > 7 ;但是我认为我的查询不正确。每当我改变
:WROTE *1 to :WROTE *1..2
结果与我认为不应该的结果相同 - 任何帮助将不胜感激
【问题讨论】:
-
我假设一篇论文可以有多个作者,对吗?
-
是的,论文可以有多个作者
-
你对
[:WROTE*1..2]在做什么有什么理解?由于您使用的是 [:WROTE*1] (没有必要使用 *1),我感觉您可能误解了一些东西 -
inverse 我认为 *1 将返回所有共同作者,*1..2 将返回所有与作者 x 的共同作者(y)以及所有共同作者-author with (y) so 2 hops away from my author x?
标签: database neo4j cypher graph-databases