繁体   English   中英

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

[英]Nodes with same relation to a third node in a graph database

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

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

我期望返回的两个对中的一个在两个标识符中都具有相同的Person,但那没有发生。 有人可以解释一下为什么吗? match子句是否在使用的不同标识符中排除重复的元素?

更新:这个问题在Neo4J在线教程的“第3课-添加与Cypher的关系,更多”中出现,我在上面提出了我提到的查询。 我将查询优化为以下查询,以便更直接地关注我的问题:

MATCH (a:Person {name:"Keanu Reeves"})-[:ACTED_IN]->()<-[:ACTED_IN]-(b)
RETURN a,b;

结果:

|---------------|--------------------|
| 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      |
|------------------------------------|

那么,为什么在a和b中没有与Keanu Reeves发生争执? 他不应该同时满足两种关系:ACTED_IN吗?

您观察到的行为是设计使然。

引用手册

在进行模式匹配时,Cypher确保不包含在单个模式中多次发现相同图形关系的匹配。 在大多数使用情况下,这是明智的做法。

我会检查您的数据样本。 您的查询看起来对我来说很好。 我用一个简单的数据集进行了复制,这里的验证是它确实会产生与您想要的对类似的对。

乔饰演《 Some Flick》

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

但是乔是如此多才多艺,他还执导过《 Some Flick》。

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

当然是乔。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM