![精通Neo4j](https://wfqqreader-1252317822.image.myqcloud.com/cover/113/47216113/b_47216113.jpg)
上QQ阅读APP看书,第一时间看更新
3.1.5 唯一性
当进行模式匹配时,Neo4j将确保单个模式中不会包含匹配到多次的同一个图关系。例如:查找一个用户的朋友的朋友不应该返回该用户。
下面创建一些节点和关系:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101422.jpg?sign=1738882928-WAEP9ifSr68WRvDlQEqpyImUff3Syhxc-0-b4d832af5157d020cbc5bfc9ad322f96)
上面Cypher创建的结果如图3-2所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_86551.jpg?sign=1738882928-6J4aej5DtbqPY4Td2GNKRQRMG8ek5USl-0-55fc5a8d324d1e56609752bddc388db9)
图3-2 Cypher创建的图
下面来查询Adam的朋友的朋友:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101423.jpg?sign=1738882928-ifQMoIoBVuV1vstUmu52VZfe4bpquMkm-0-d8d2408f98167d274b997001e14a73e4)
查询结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101426.jpg?sign=1738882928-NhaanDA0nzutW14L1tWvBKiofWbtzgow-0-d3443eb1a4375d95464777d4b732a5a6)
在这个查询中,Cypher会确保不会包含关系r1和r2指向的同一个图关系。
但是有时也未必希望这样。如果需要返回该用户,可以通过多个MATCH语句延伸匹配关系来实现,如下:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101424.jpg?sign=1738882928-VFPWkeqrt5feXssSRdkUJCmASz2EEHlL-0-368556e45c17856e11fff1d2b210b8d6)
查询结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101431.jpg?sign=1738882928-PiJ4OhfGvsuUDvUzi5X3stgJXrHLD9JA-0-b637f7aac1865935ea8164308cb92127)
注意,下面的查询虽然看起来与前一个类似,但事实上它等价于前一个。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101427.jpg?sign=1738882928-miA5GuRgY9PvsgQRkImsJnR8eKgut9Ih-0-852da72058f2c053a9dbb4490fb5ec60)
这里的MATCH语句包含一个有两条路径的单个模式,而前一个查询有两个不同的模式。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101433.jpg?sign=1738882928-AqMb1dLwFoypHASqmR9floD2q2tbHeJC-0-e72b57bdf8b6e39f572361c1efb8c328)