密码查询中的多个match语句

时间:2019-06-25 12:00:59

标签: neo4j cypher

我正在努力检测图形数据库中的各种模式。目前,我想在一个查询中组合各种MATCH语句。我有一个测试数据集,其中记录了人们结婚的教堂。一对夫妇有可能在天主教教堂和荷兰归正教堂结婚(我们在这里谈论的是早期的现代荷兰共和国)。因此,我想创建一个查询来检索这些人的姓名。

略微简化,图表的构建块由三种类型的节点组成:人,事件,教堂。事件节点具有另一个标签“婚姻”,而教堂节点具有另一个标签“罗马天主教堂”或“荷兰归正教堂”。例如:John Doe在天主教中的婚姻以这种形式存在:

(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

我没有收到任何错误消息,但是查询没有产生任何结果(而我检查了我的数据集是否包括在两个教堂举行过婚典仪式的人)。知道我在做什么错吗?

1 个答案:

答案 0 :(得分:0)

您正在重用变量,这就是为什么您没有得到结果的原因,请尝试以下查询

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