You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypher如何基于前序MATCH结果过滤查询指定国家国内航班

问题背景

当前使用国际航班领域的图模型,结构示意图如下:
国际航班图模型结构

查询目标:统计指定国家(示例为意大利)国内航班的航司运营班次排名,国内航班判定标准为:航班通过SOURCE、DESTINATION关系关联的出发、到达机场,全部属于该目标国家。
原有查询逻辑存在缺陷:仅校验了航班任意一端连接意大利境内机场,未校验另一端机场归属,因此会将一端在意大利、一端在境外的国际航班纳入统计,导致结果不准。

修正后查询语句

核心思路是提前归集目标国家所有机场为集合,要求匹配到的航班两个端点都在集合内,从匹配阶段就过滤掉跨境航班:

// 匹配目标国家下所有机场,归集为集合
MATCH (:Country {name:'Italy'})<-[:EXIST]-(:City)<-[:IS_IN]-(airport:Airport)
WITH collect(airport) AS domestic_airports
// 匹配出发、到达机场均在境内集合的航班
MATCH (src:Airport)-[:SOURCE]->(f:Flight)-[:DESTINATION]->(dest:Airport)
WHERE src IN domestic_airports AND dest IN domestic_airports
// 关联航班所属航司,统计去重后的航班数量
MATCH (f)-[:OF]->(airline:Airline)
WITH airline, count(DISTINCT f) AS flight_count
ORDER BY flight_count DESC
RETURN airline.name AS airline_name, flight_count AS domestic_flight_volume
LIMIT 10
关键逻辑说明
  • 提前归集境内机场集合,避免后续匹配时重复遍历国家、城市层级的关联关系,查询执行效率更高
  • 明确按方向匹配SOURCE、DESTINATION关系,同时校验两个端点的机场归属,彻底排除跨境航班
  • 统计时对航班做去重处理,避免多关系遍历导致的重复计数问题

内容的提问来源于stack exchange,提问作者orestisf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 07:06:08