neo4j - Cypher 查询中的多个匹配语句
问题描述
我正在努力检测图形数据库中的各种模式。目前我想在一个查询中组合各种 MATCH 语句。我有一个测试数据集,其中记录了人们结婚的教堂等。有可能(我们在这里谈论的是早期现代荷兰共和国)一对夫妇在天主教堂和荷兰归正教会结婚。因此,我想创建一个查询来检索这些人的姓名。
稍微简化一下,图的构建块由三种类型的节点组成:人、事件、教堂。事件节点有另一个标签“婚姻”,而教堂节点有另一个标签“罗马天主教会”或“荷兰归正教会”。例如:约翰·多伊在天主教堂的婚姻以这种形式存在:
(p:Person {name: "John Doe"})-[:MARRIED_AT]->(event:marriage)-[:TOOK_PLACE_IN]->(church:Roman_Catholic_Church)
一些人节点与与之相关的各种教会有各种婚姻。如何找回在天主教会和荷兰归正会结婚的夫妻?我创建了这个查询,但虽然它应该产生结果,但它没有:
Match (p:person)-[:MARRIED_AT]->(event)-[:TOOK_PLACE_IN]->(ch:church:Roman_Catholic_Church), (p:person)-[:MARRIED_AT]->(event)-[:TOOK_PLACE_IN]->(ch:church:Reformed_Church) Return p.name
我没有收到任何错误消息,但查询没有产生任何结果(而我已经检查过我的数据集确实包括在两个教堂举行婚礼的人)。知道我在这里做错了什么吗?
解决方案
您正在重用变量,这就是您没有得到结果的原因,请尝试以下查询
MATCH (p:person)-[:MARRIED_AT]->(:marriage)-[:TOOK_PLACE_IN]->(rcc:church:Roman_Catholic_Church),
(p)-[:MARRIED_AT]->(:marriage)-[:TOOK_PLACE_IN]->(rc:church:Reformed_Church)
RETURN DISTINCT p.name
推荐阅读
- c++ - VS 代码调试器不打开终端
- asp.net-mvc - 为什么身份验证在某些浏览器中有效,而在其他浏览器中无效
- python - Strange characters, Python said TypeError: ord() expected a character, but string of length X found
- fish - 带有鱼壳的标签完整的herbstclient?
- jquery - $(this).closest('h5').find('.comment').text 返回“”(无)
- c# - 使用 SkipWhile 时的 C# 无限循环
- maven - 带有多个标签的 -Dcucumber.options 的 Maven 配置文件错误
- sql - 如何使用like/rlike过滤掉两边有空格的字符串
- php - PHP 5 | 通过引用/值传递的对象与写入时复制 | 添加为类属性时
- .net - 从 64 位 .NET 与 32 位访问进行通信