且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

获取neo4j中每个组的前n条记录

更新时间:2023-01-28 19:21:12

尝试

MATCH (o:Order)-[r:ADDED]->(a:Article)
WITH o, r, a
ORDER BY o.oid, r.t
WITH o, COLLECT(a)[..2] AS topArticlesByOrder UNWIND topArticlesByOrder AS a
RETURN a.aid AS articleId, COUNT(*) AS count

结果看起来像

articleId    count
   8           6
   2           2
   4           5
   7           2
   3           3
   6           5
   0           7

在此示例图使用

FOREACH(opar IN RANGE(1,15) |
    MERGE (o:Order {oid:opar})
    FOREACH(apar IN RANGE(1,5) |
        MERGE (a:Article {aid:TOINT(RAND()*10)})
        CREATE o-[:ADDED {t:timestamp() - TOINT(RAND()*1000)}]->a
    )
)