![精通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=1739024961-0GNTbA0px5U13e6inkBuQdbari7BQg9M-0-398fbe8c842ce05cc9eaebcc5d11908f)
上面Cypher创建的结果如图3-2所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_86551.jpg?sign=1739024961-aYmmRNWIVqxbqSkMaFJTSqVVsn7G870B-0-a6ac0f17c09741b8cf2d3446f2df94ef)
图3-2 Cypher创建的图
下面来查询Adam的朋友的朋友:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101423.jpg?sign=1739024961-LDLYEjp4cnTeJyApo0cMJPK9sWHljqpI-0-5de49a5b4819a72efcde513a6a03e9a7)
查询结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101426.jpg?sign=1739024961-sAyV2p6ioYnM8Sh0jiVlyCcJ03MywF9t-0-10cb904768e684d9a4307cf5784e7f80)
在这个查询中,Cypher会确保不会包含关系r1和r2指向的同一个图关系。
但是有时也未必希望这样。如果需要返回该用户,可以通过多个MATCH语句延伸匹配关系来实现,如下:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101424.jpg?sign=1739024961-kKzFc7fV4ttiF3cQx2H0wEkHloq7yUXt-0-9dda4da3d746813a923418de84f53247)
查询结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101431.jpg?sign=1739024961-FJhDbMRmqQ6uGA9xXFywvhxxQSiXaMi8-0-511f32dbe286affd267f13b3f5e26d56)
注意,下面的查询虽然看起来与前一个类似,但事实上它等价于前一个。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101427.jpg?sign=1739024961-hTicwAMlJ0QxbA09EnCRUlhEdcUnVkz8-0-5b2791ddf1d6a1b01f19fb0ae4b68dd9)
这里的MATCH语句包含一个有两条路径的单个模式,而前一个查询有两个不同的模式。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101433.jpg?sign=1739024961-i42ONUwSXlo0f2IqoSIem2kBbK5yESe4-0-fb60879f52595dbb7616616607af1b72)