我在两个相同的 neo4j 数据库模式上运行以下密码查询:
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) 是唯一一个在同一个城市生活和参加活动的人。
但是,当我在这里运行相同的查询(在与本地服务器上完全相同的数据库架构上)时,我得到以下不正确的结果:
+----------------------------------------------------+
| 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),这里的结果也是不正确的(不存在的额外路径)。