【问题标题】:Cypher: Query to check if node is part of top 10 resultsCypher:查询以检查节点是否是前 10 个结果的一部分
【发布时间】:2020-06-11 21:41:32
【问题描述】:

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

  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

【问题讨论】:

    标签: neo4j cypher graph-databases neo4j-apoc cypher-3.1


    【解决方案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
    

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

    [更新]

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

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

    【讨论】:

    • 谢谢,但是这会创建一个属性属性。我需要为数据库中的任何给定组织节点返回 TRUE 或 FALSE 的实际结果
    猜你喜欢
    • 2021-02-16
    • 2022-07-20
    • 2013-10-19
    • 2014-01-18
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多