Neo4j 最大函数

Neo4j max function

我正在尝试在 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,因此结果自然只有 return 个包含该节点的记录。这有点棘手,因为节点 属性 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)

return:["20.04", "20.10", "21.04", "21.10"]

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

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

这将 return "17.04"