我有以下查询,以检索研究人员每一过程的前2篇论文(引用次数):
MATCH (p:Paper)-[:SUBMITTED_TO]->(a:Proceeding),(p)-[:CITED_BY]->()
WITH p.paperTitle as Paper, size((p)-[:CITED_BY]->()) as numCitations,
collect(distinct a.proceedingName) as Proceedings
UNWIND Proceedings AS Proceeding
WITH Paper, numCitations, Proceeding
ORDER BY Paper, numCitations, Proceeding
RETURN Paper, numCitations, collect(Proceeding) as Proceedings
ORDER BY Proceedings, numCitations DESC我从中得到的输出是:
Paper numCitations Proceedings
Title1 4 Proc1
Title2 3 Proc1
Title3 2 Proc1
Title4 7 Proc2
Title5 5 Proc2
Title6 3 Proc2
Title7 8 Proc3
Title8 4 Proc3
Title9 2 Proc3现在我要做的是只获得每一次过程中出现的所有文件中的前2篇(所有这些过程中都有3篇),但是如果在查询结束时使用限制2,我只会得到所有文件中的前2名(而不是每个过程):
Paper numCitations Proceedings
Title7 8 Proc3
Title4 7 Proc2注意,Proc1被完全丢弃了。这不是我要找的。对于如何在Neo4j中做到这一点,有什么想法吗?
谢谢!
发布于 2019-02-28 14:33:01
下面是我在家谱中使用的一个查询,用于提取一组男性的两个大儿子(由他们的RN识别):
match (p:Person)<-[:father]-(c:Person) where p.RN in [5,7,27]
with p, c order by c.BD
with p.RN as RN,collect(c.fullname) as cC
return RN,cC[0..2]通过类推,您可以根据numCitations (而不是出生日期)对数据进行排序,然后将结果限制为2。
https://stackoverflow.com/questions/54922557
复制相似问题