获得不同(和不正确)的结果会在相同的数据库模式上运行相同的cypher查询

时间:2012-11-28 18:07:12

标签: neo4j graph-databases cypher

我正在两个相同的neo4j数据库模式上运行以下cypher查询:

START dave = node(7)
// dave's friend who lives and attends an event in the same city
MATCH dave-[:FRIEND]-friend-[:LIVES]->city-[:HOSTS]->event<-[:ATTENDS]-friend
RETURN dave.name, friend.name, city.name, event.name;

当我在本地服务器上的数据库架构上运行上述查询时,我得到了正确的结果 - 单一路径:

+----------------------------------------------------+ 
| dave.name | friend.name | city.name | event.name   |  
+----------------------------------------------------+ 
| "dave"    | "adam"      | "london"  | "exhibition" | 
+----------------------------------------------------+

事实上,对于4个人节点(4,5,6,7)中的每一个,adam = node(4)是唯一一个在同一城市居住和参加活动的人。

但是,当我运行相同的查询here时(在与本地服务器完全相同的数据库模式上),我得到以下不正确的结果:

+----------------------------------------------------+ 
| dave.name | friend.name | city.name | event.name   |  
+----------------------------------------------------+ 
| "dave"    | "adam"      | "london"  | "exhibition" | 
| "dave"    | "adam"      | "london"  | "exhibition" | 
| "dave"    | "bill"      | "paris"   | "seminar"    | // bill doesn't attend seminar
+----------------------------------------------------+

对于其他人而不是dave = node(7),结果here也是不正确的(不存在的额外路径)。

1 个答案:

答案 0 :(得分:0)

尝试将匹配阶段分为2,我从未在一个匹配模式中使用过一个参数名称2次:

除了

MATCH dave-[:FRIEND]-friend-[:LIVES]->city-[:HOSTS]->event<-[:ATTENDS]-friend

使用

MATCH dave-[:FRIEND]-friend-[:LIVES]->city-[:HOSTS]->event, event<-[:ATTENDS]-friend