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

Neo4j Cypher查询需求:获取同市人员及目标人员所有居住城市

解决方案

要实现获取与指定人员p同住过至少一个城市的所有人员p1,同时返回p居住过的所有城市名称,可以分两步匹配:

  1. 先匹配并收集p的所有居住城市
  2. 再匹配所有与p有共同居住城市的p1,并关联第一步收集的城市列表

对应的Cypher查询如下:

// 第一步:获取p的所有居住城市集合
MATCH (p:Person)-[:LIVED_IN]->(c:City)
WHERE p.id = 0
WITH p, collect(DISTINCT c.name) AS all_p_cities

// 第二步:匹配所有和p有共同居住城市的p1
MATCH (p)-[:LIVED_IN]->(:City)<-[:LIVED_IN]-(p1:Person)
// 可选:排除p自己,根据实际需求决定是否保留这行
WHERE p1 <> p

// 返回结果,DISTINCT确保同一个p1只出现一次
RETURN DISTINCT p1, all_p_cities

说明

  • 第一步通过WITH将p的所有城市集合传递到下一个匹配阶段,彻底避免了原查询只返回共同居住城市的问题
  • RETURN中的DISTINCT是为了避免同一个p1因和p在多个城市居住过而重复出现
  • 如果不需要排除p自己,直接删除WHERE p1 <> p这一行即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:39:57