You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于顶点属性去重分组并输出顶点全属性?Cypher实现

基于顶点属性分组去重并返回完整顶点的Cypher实现

要实现按商品分类分组,每个分类下随机返回一个符合条件的完整商品顶点,有两种常用的Cypher实现方式:

方式一:使用APOC工具库(推荐,更简洁)

APOC提供了直接从集合中随机选取元素的函数,适合快速实现需求:

MATCH (s:Shop)-[:SELL]->(p:Product)
WHERE s.org_id = 'shop1'
WITH p.product_Category AS category, COLLECT(p) AS products
RETURN apoc.coll.randomItem(products) AS random_product
ORDER BY random_product.published_at DESC
LIMIT 10

逻辑说明:

  • WITH子句按product_Category分组,将每个分类下所有符合条件的商品收集为一个列表
  • apoc.coll.randomItem(products)从每个分类的商品列表中随机选取一个
  • 最后按选中商品的发布时间排序,限制返回10条结果

方式二:不依赖APOC工具库

如果无法使用APOC,可以通过随机排序+取首元素的方式实现:

MATCH (s:Shop)-[:SELL]->(p:Product)
WHERE s.org_id = 'shop1'
WITH p.product_Category AS category, p
ORDER BY category, rand()
WITH category, HEAD(COLLECT(p)) AS random_product
RETURN random_product
ORDER BY random_product.published_at DESC
LIMIT 10

逻辑说明:

  • 先按分类分组,同时用rand()给每个分类下的商品随机排序
  • 再用HEAD(COLLECT(p))取每个分类排序后的第一个商品,达到随机选取的效果
  • 同样支持按发布时间排序和结果数量限制

内容的提问来源于stack exchange,提问作者Juliette Gia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:18:14