gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:58:05 26 4
gpt4 key购买 nike

我需要对neo4j数据库中的数据进行分组,然后过滤掉除每个组中最重要的n记录以外的所有内容。

例子:

我有两种节点类型:订单和商品。它们之间存在“添加”关系。 “添加”关系具有时间戳属性。我想知道的是(对于每篇文章)它是添加到订单的前两篇文章中的多少次。我尝试的是以下方法:

  • 获取所有订单-[ADDED] -Article
  • 将步骤1的结果按订单ID作为第一个排序关键字,然后按ADDED关系的时间戳作为第二个排序关键字;
  • 步骤2中每个子组的
  • 代表一个顺序,仅保留前2行;
  • 在步骤3的输出中计算不同的文章ID;

  • 我的问题是我陷入了步骤3。是否可以为代表订单的每个子组获取前2行?

    谢谢,

    提比留

    最佳答案

    尝试

    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

    在创建的这个 sample graph
    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
    )
    )

    关于neo4j - 获取neo4j中每个组的前n条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951651/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com