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"
。
我正在尝试在 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"
。