
上QQ阅读APP看书,第一时间看更新
3.1.5 唯一性
当进行模式匹配时,Neo4j将确保单个模式中不会包含匹配到多次的同一个图关系。例如:查找一个用户的朋友的朋友不应该返回该用户。
下面创建一些节点和关系:

上面Cypher创建的结果如图3-2所示。

图3-2 Cypher创建的图
下面来查询Adam的朋友的朋友:

查询结果:

在这个查询中,Cypher会确保不会包含关系r1和r2指向的同一个图关系。
但是有时也未必希望这样。如果需要返回该用户,可以通过多个MATCH语句延伸匹配关系来实现,如下:

查询结果:

注意,下面的查询虽然看起来与前一个类似,但事实上它等价于前一个。

这里的MATCH语句包含一个有两条路径的单个模式,而前一个查询有两个不同的模式。
