Neo4j 与图形数据库中的第三个节点具有相同关系的节点

Neo4j 与图形数据库中的第三个节点具有相同关系的节点,neo4j,Neo4j,我正在学习Neo4J在线教程,在使用查询工具尝试此查询时遇到了一个问题: match (a:Person)-[:ACTED_IN|:DIRECTED]->()<-[:ACTED_IN|:DIRECTED]-(b:Person) return a,b; 那么,为什么在a和b中没有基努·里夫斯的争吵呢?他不应该同时符合这两种关系吗:参与?我会检查你的数据样本。你的查询对我来说似乎很有效。我用一个简单的数据集进行了复制,这里验证了它是否产生了像您所寻找的那样的配对 乔演了一部“电影” 但

我正在学习Neo4J在线教程,在使用查询工具尝试此查询时遇到了一个问题:

match (a:Person)-[:ACTED_IN|:DIRECTED]->()<-[:ACTED_IN|:DIRECTED]-(b:Person)
return a,b;

那么,为什么在a和b中没有基努·里夫斯的争吵呢?他不应该同时符合这两种关系吗:参与?

我会检查你的数据样本。你的查询对我来说似乎很有效。我用一个简单的数据集进行了复制,这里验证了它是否产生了像您所寻找的那样的配对

乔演了一部“电影”

但乔是如此多才多艺,他还导演了“一些电影”

那么我们知道的演员/导演组合是谁

neo4j-sh (?)$ match (a:Person)-[:ACTED_IN|:DIRECTED]->()<-[:ACTED_IN|:DIRECTED]-(b:Person)
> return a,b;
+-----------------------------------------------------+
| a                        | b                        |
+-----------------------------------------------------+
| Node[222128]{name:"Joe"} | Node[222128]{name:"Joe"} |
| Node[222128]{name:"Joe"} | Node[222128]{name:"Joe"} |
+-----------------------------------------------------+
2 rows
50 ms
neo4j sh(?)$match(a:Person)-[:ACTED_IN |:DIRECTED]->()返回a,b;
+-----------------------------------------------------+
|a | b|
+-----------------------------------------------------+
|节点[222128]{name:“Joe”}节点[222128]{name:“Joe”}|
|节点[222128]{name:“Joe”}节点[222128]{name:“Joe”}|
+-----------------------------------------------------+
2排
50毫秒

当然是乔。

你观察到的行为是故意的

引述:

在模式匹配时,Cypher确保不包括 同一图形关系在单个图形中多次出现 图案在大多数用例中,这是一件明智的事情


谢谢@frobber的回答。但我怀疑每一行都用不同的关系匹配了节点a和b,因此如果节点“a”与电影“某个电影”中的relation:act_匹配,那么节点“b”与:DIRECTED relation匹配。例如,当您向仅在电影中演出的人进行查询时,您将不会收到该人在两个标识符中的行。也许我没有正确地表达自己…你可能想更新你的问题。此外,考虑返回在返回结果中匹配的关系。这将帮助我们确定返回的关系是否是您期望/正在寻找的关系。谢谢@cybersam,这就解释了这种行为!到现在为止,我还没有读过你提到的手册部分。
|---------------|--------------------|
| a             | b                  |
|---------------|--------------------|
| Keanu Reeves  | Carrie-Anne Moss   |
| Keanu Reeves  | Laurence Fishburne |
| Keanu Reeves  | Hugo Weaving       |
| Keanu Reeves  | Brooke Langton     |
| Keanu Reeves  | Gene Hackman       |
| Keanu Reeves  | Orlando Jones      |
|------------------------------------|
neo4j-sh (?)$ create (p:Person {name:"Joe"})-[:ACTED_IN]->(m:Movie {name:"Some Flick"});
+-------------------+
| No data returned. |
+-------------------+
Nodes created: 2
Relationships created: 1
Properties set: 2
Labels added: 2
14 ms
neo4j-sh (?)$ match (p:Person {name: "Joe"}), (m:Movie {name: "Some Flick"}) create p-[:DIRECTED]->m;
+-------------------+
| No data returned. |
+-------------------+
Relationships created: 2
23 ms
neo4j-sh (?)$ match (a:Person)-[:ACTED_IN|:DIRECTED]->()<-[:ACTED_IN|:DIRECTED]-(b:Person)
> return a,b;
+-----------------------------------------------------+
| a                        | b                        |
+-----------------------------------------------------+
| Node[222128]{name:"Joe"} | Node[222128]{name:"Joe"} |
| Node[222128]{name:"Joe"} | Node[222128]{name:"Joe"} |
+-----------------------------------------------------+
2 rows
50 ms