我有以下查询来检索每个研究人员的前两篇论文(根据引用数量):
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
我现在想做的是仅获取每个程序出现的所有论文的前两项(所有这些论文)查询,我只获得了所有内容的前两个(不是每个程序):
Paper numCitations Proceedings
Title7 8 Proc3
Title4 7 Proc2
请注意,Proc1被完全丢弃。这不是我想要的。关于如何在neo4j中执行此操作的想法?
谢谢!
这是我在家谱中使用的查询,以拔出一组男人的两个最大的孩子(由他们的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]
通过类比,您可以按数字(而不是出生日期)对数据进行排序,然后将结果限制为2。