首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cypher查询中集合元素的排序

问Cypher查询中集合元素的排序
EN

Stack Overflow用户
提问于 2015-07-30 15:47:57
回答 1查看 1.3K关注 0票数 1

我正在使用Neo4J开发一个应用程序,在一些查询中排序有问题。我有一个有促销活动的商店列表,所以我为每个商店都有一个节点,为每个促销设置一个节点。每家商店都可以有多个促销活动,所以这是一对多的关系。有些促销活动有特色(featured = true),所以我希望它们先出现。我正在构建一个查询,它执行以下操作:

  • 返回一个以启动项作为集合的存储列表(像这样返回它是分页的理想方法)
  • 对商店进行分类,以便那些促销功能最突出的商店首先出现。
  • 对集合进行排序,以便首先显示具有特色的促销活动。

到目前为止,我有以下几点:

MATCH (p:Promotion)-[r:BELONGS_TO_STORE]->(s:Store) WITH p, s, collect(p.featured) as featuredCol WITH p, s, LENGTH(FILTER(i IN featuredCol where i='true')) as featuredCount ORDER BY p.featured DESC, featuredCount DESC RETURN s, collect(p) skip 0 limit 10

首先,我尝试使用WITH子句使用featured创建一个集合。然后,我尝试创建第二个集合,其中功能属性等于true,然后在第二个WITH子句中获得长度。这将正确地将集合与促销进行排序,但不会对商店进行排序。如果我试图在末尾添加另一种类型,就会出现一个错误,因为featuredCount变量不在RETURN子句中。我不希望返回子句中的featuredCount变量,因为它抛出了我的分页。

以下是我的第二个查询:

MATCH (p:Promotion)-[r:BELONGS_TO_STORE]->(s:Store) WITH p, s, collect(p.featured) as featuredCol WITH p, s, LENGTH(FILTER(i IN featuredCol where i='true')) as featuredCount ORDER BY p.featured DESC, featuredCount DESC RETURN s, collect(p) ORDER BY featuredCount skip 0 limit 10

我对Neo4J非常陌生,所以任何帮助都将受到极大的感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-30 18:20:49

这个查询(请参阅此控制台)对您有用吗?

代码语言:javascript
复制
MATCH (p:Promotion)-[r:BELONGS_TO_STORE]->(s:Store)
WITH p, s
ORDER BY p.featured DESC 
WITH s, COLLECT(p) AS pColl
WITH s, pColl, REDUCE(n = 0, p IN pColl | CASE
                      WHEN p.featured
                      THEN n + 1
                      ELSE n END ) AS featuredCount
ORDER BY featuredCount DESC 
RETURN s, pColl
LIMIT 10

此查询执行以下步骤:

  • 它对匹配的行进行排序,以便具有功能升级的行是第一行。
  • 它将每个不同p的所有s节点聚合到一个pColl集合中。在每个pColl中,特色促销仍然是第一个出现的。
  • 它计算每个pColl中的特色促销数量,并订购商店,以便最具特色促销的商店首先出现。
  • 然后返回结果。

注意:这个查询假设featured有一个布尔值,而不是字符串。(FYI:ORDER BY认为true大于false)。如果此假设不正确,则可以将WHEN子句更改为WHEN p.featured = 'true'。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31728433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档