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