首页 > 解决方案 > Cypher:查询以检查节点是否是前 10 个结果的一部分

问题描述

我正在尝试进行以下操作的密码查询

  1. 查找美国最大的 10 家组织(按收入计算)
  2. 如果组织在前 10 名中,则返回“True”,如果不是,则返回“False”

我试图提取前 10 名组织列表的代码如下所示:

MATCH (org)
WHERE org.revenueCurrency = 'USD'
WITH org as topCompany
ORDER by topCompany.revenue desc LIMIT 10
RETURN topCompany

但是如果一家公司进入前 10 名,不确定如何返回 True 或 False

标签: neo4jcyphergraph-databasesneo4j-apoccypher-3.1

解决方案


这是一种方式:

MATCH (org)
WHERE org.revenueCurrency = 'USD'
WITH org
ORDER by org.revenue DESC
WITH COLLECT(org) AS orgs
UNWIND [i IN RANGE(0, SIZE(orgs)-1) | {org: orgs[i], top10: i < 10}] AS result
RETURN result

top10每行的属性result将是一个布尔值。

[更新]

如果您希望每个结果行是“平面”而不是映射,请使用此更改的RETURN子句:

RETURN result.org AS org, result.top10 AS top10

推荐阅读