我在寻找2个关系时想出了如何编写此查询,但不确定如何为查询添加更多关系.
假设您有一个带有"阅读器"和"书籍"作为节点的图书俱乐部数据库.'book'节点具有'genre'属性(用于定义该书是小说,非小说,传记,参考等).在'读者'节点和'书'节点之间存在关系"HasRead"有人读了一本特定的书.
如果我想找到读过小说和非小说类书籍的读者,我可以执行这个Cypher查询:
Start b1=node:MyBookIndex('Genre:Fiction'),
b2=node:MyBookIndex('Genre:Non-Fiction')
Match b1-[:HadRead]-r-[:HasRead]-b2
Return r.ReaderName
Run Code Online (Sandbox Code Playgroud)
上述查询的关键是Match子句,它具有两个书籍别名,r用于"读者"节点的别名.
问题:如何编写查询以查找已阅读过小说和非小说和参考书籍的用户?当你有超过2个你正在寻找的东西时,我会坚持你会如何编写匹配条款.
您可以在单个MATCH子句中指定多行,以逗号分隔.例如,以下两个MATCH子句在语义上是等效的(并且将由引擎进行相同的评估):
//these mean the same thing!
match a--b--c
match a--b, b--c
Run Code Online (Sandbox Code Playgroud)
您可以拥有任意数量的这些比赛.因此,将其插入到您的查询中,您会得到:
start b1=node:MyBookIndex('Genre:Fiction'),
b2=node:MyBookIndex('Genre:Non-Fiction'),
b3=node:MyBookIndex('Genre:Reference')
match b1-[:HasRead]-r,
b2-[:HasRead]-r,
b3-[:HasRead]-r
return r.ReaderName
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1976 次 |
| 最近记录: |