如何用Cypher仅查询出数据库中未收录的首都节点?
高效查询未收录的首都城市
你的现有查询通过重复OPTIONAL MATCH加UNION的方式实现,不仅写法冗余,还会返回已存在的城市和null,不够直观。可以用更简洁的方式直接筛选出未收录的城市:
WITH ['London', 'Paris', 'Berlin', 'Rome'] AS targetCapitals UNWIND targetCapitals AS capital OPTIONAL MATCH (n:Capital {name: capital}) WHERE n IS NULL RETURN capital AS missingCapital
逻辑说明:
- 用
WITH一次性定义所有需要检查的首都列表,后续只需修改这个数组就能添加或删除待查城市 UNWIND将列表拆分为单个元素,逐个进行匹配检查OPTIONAL MATCH尝试匹配数据库中对应名称的Capital节点WHERE n IS NULL筛选出完全没有匹配到的城市(即未被收录的)- 最终返回的结果仅包含未收录的城市名称,没有多余内容
注意:如果你的数据库中节点标签确实是拼写错误的
Captial,请将查询中的Capital改为Captial。
内容的提问来源于stack exchange,提问作者TenTonBonton
相关产品推荐
相关产品推荐

