微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Neo4j 最大函数

如何解决Neo4j 最大函数

我正在尝试在 the “Network and IT Management” database from Neo4j sandbox搜索最新的 Ubuntu 版本

所以我写了这段代码

MATCH (os:OS) WHERE os.name = "Ubuntu" RETURN max(os.versions)

但结果是:

["14.04","16.04","16.10","17.04"]

我想我已经得到了所有版本。我该如何解决

感谢您的关注!

解决方法

您所指的沙箱仅包含一个 Ubuntu OS,因此结果自然只返回该节点的单个记录。这有点棘手,因为节点属性 versions 的值本身就是一个列表。

max 是一个聚合函数,应用于结果(不是 SINGLE 属性的值)。

想象一下,有 3 个节点与 WHERE os.name = "Ubuntu" 与各个版本匹配。可以模拟如下:

UNWIND [["14.04","16.04","16.10","17.04"],["18.04","18.10","19.04","19.10"],["20.04","20.10","21.04","21.10"]] AS versions
RETURN max(versions)

将返回:["20.04","21.10"]

如果您确实对特定节点上的各个版本感兴趣,可以通过 unwind 实现:

MATCH (os:OS) WHERE os.name = "Ubuntu"
UNWIND os.versions as version
RETURN max(version)

将返回 "17.04"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。