![精通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=1739224329-BbCUwQVRq6bygMR7g4rHgzjPzRWVshNU-0-acefeb8b8b80a8160b04e8dde244cce1)
上面Cypher创建的结果如图3-2所示。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_86551.jpg?sign=1739224329-CYDaYP8w5pbTUPaZI3B2FInu9d88gasr-0-ca2a88a32a86caef705fbd507a664966)
图3-2 Cypher创建的图
下面来查询Adam的朋友的朋友:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101423.jpg?sign=1739224329-FQAVhL72pxF2Tw3c6tGgljUZBN9JLrkp-0-b3d7f4abdb697ed033628c12dcb7d2d4)
查询结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101426.jpg?sign=1739224329-HtbM0tpo5dJ7BZQgNU017HCZiKS4NVFL-0-0ff747cd05f9b7bc0efc2abd24fd8631)
在这个查询中,Cypher会确保不会包含关系r1和r2指向的同一个图关系。
但是有时也未必希望这样。如果需要返回该用户,可以通过多个MATCH语句延伸匹配关系来实现,如下:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P110_101424.jpg?sign=1739224329-IBsHmeNVRDM3jFGQYjA2fBercI4kUUH0-0-992046464156ec08ea93d52615191b24)
查询结果:
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101431.jpg?sign=1739224329-23mTT5nzzwTUnCjzIqR2YIxtM24ho5u2-0-bbbef6286c41c8be21e7b9306e0c6dbb)
注意,下面的查询虽然看起来与前一个类似,但事实上它等价于前一个。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101427.jpg?sign=1739224329-oPSt17teYVDbfoRnNTQBbyHqQwHa1xZt-0-474ae96d6fda8e10b6c06f151f9dd12b)
这里的MATCH语句包含一个有两条路径的单个模式,而前一个查询有两个不同的模式。
![](https://epubservercos.yuewen.com/84FE89/26581284601284906/epubprivate/OEBPS/Images/Figure-P111_101433.jpg?sign=1739224329-M0SrTFwHHBTiHjgDOfAHcQSQCaoxrGcO-0-ff54f74ef278d7828c78ff6d99f3022f)