我想你在找一个
"arg max"
样式查询。在这种情况下,使用
collect
要走的路是:
MATCH (asset:Asset {name:'Asset Name'})-[]-(ara:AssetRiskAssessment)
WITH asset, ara
CALL spatial.intersects('threat_zones',asset.wkt) YIELD node
WITH node, asset, ara
MATCH (node)<-[:FOR]-(tss:ThreatScenarioScore)-[]-(ts:ThreatScenario)
WITH node, tss, ts
ORDER BY ts.name ASC, node.zindex DESC
WITH
ts.name AS name,
collect({
zindex: node.zindex, intention: tss.intention, capability: tss.capability
})[0] AS max
RETURN
name,
max.zindex AS zindex,
max.intention AS intention,
max.capability AS capability
这会根据元组的
name
(上升),但更重要的是,根据他们的
zindex
按降序排列。所以当
Z指数
和
tss
属性被收集到一个列表中,第一项(索引
[0]
)将以最大值保存元素
Z指数
价值