neo4j - Neo4j 列表不在另一个列表查询中
问题描述
和节点具有Person
关系类型。一个人可能喜欢很多餐馆。Restaurant
(:Person)-[:LIKED]->(:Restaurant)
和节点具有Restaurant
关系类型。一家餐厅可能位于多个城市。City
(:Restaurant)-[:LOCATED_IN]->(:City)
和节点具有Person
关系类型。一个人可能住在不止一个城市。City
(:Person)-[:LIVES_IN]->(:City)
我想要person_name
那些喜欢restaurant
位于与city
他们现在居住的地方不同的地方的人以及这些餐馆的列表,这是我的尝试:
MATCH (c:City)<-[LIVES_IN]-(p:Person)-[:LIKED]->(r:Restaurant)-[:LOCATED_IN]->(rc:City)
WHERE NOT c.city_name IN rc.city_name
RETURN p.person_name, collect(r.restaurant_name);
这没用。
解决方案
这应该这样做:
MATCH (c:City)<-[LIVES_IN]-(p:Person)
WITH p, COLLECT(DISTINCT c) AS personCities
MATCH (p)-[:LIKED]->(r:Restaurant)-[:LOCATED_IN]->(rc:City)
WHERE NOT rc IN personCities
RETURN p.person_name, collect(r.restaurant_name)
推荐阅读
- r - R,填充单元格的嵌套条件
- meson-build - 将文件对象转换为字符串
- ruby-on-rails - 测试 XML 或 CSV 输出时,Rspec 神秘通过
- mysql - 不支持的子查询表达式“时尚”:子查询表达式仅引用外部查询表达式
- java - 为什么带有-jar的java忽略-classpath?
- hyperledger-fabric - 使用连接配置文件安装 Hyperledger Fabric 链码
- c# - 我可以将内存中的位图作为 jpeg 直接保存到 Azure
- javascript - javascript array.includes 在反应中无法正常工作
- jquery - Uncaught SyntaxError: Unexpected token !=
- swift - 如何在 swift MKLocalSearch 中访问城市和地址