neo4j - Cypher:查询以检查节点是否是前 10 个结果的一部分
问题描述
我正在尝试进行以下操作的密码查询
- 查找美国最大的 10 家组织(按收入计算)
- 如果组织在前 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
解决方案
这是一种方式:
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
推荐阅读
- laravel - 在 laravel 中找不到图像
- c++ - 如何打印当前执行文件 C++ 的内容?
- r - rvest 返回 schannel:SNI 或证书检查失败:SEC_E_WRONG_PRINCIPAL (0x80090322) - 目标主体名称不正确
- c# - 试图构建一个数据库查找应用程序,但我得到'实体类型......需要定义一个主键',尽管它是在我的数据库中定义的
- django - FieldError:无法将关键字“username_iexact”解析为字段
- javascript - javascript推入后如何返回数组
- java - 在每行之后打印二维数组中行的总和
- html - 固定导航栏上不同层的 Z-index CSS 问题
- javascript - CloneNode Vs Clone 我们必须将其设为子节点吗?
- ubuntu - 为什么 coturn 服务器返回 401:未经授权