arangodb - 如果ArangoDB中有顶点(例如:明星,电影)和边(例如:star_in,导演,...),如何查询由某人主演和导演的电影?
问题描述
如果ArangoDB中有顶点(例如:明星,电影)和边(例如:star_in,导演,制片人),我想得到周星驰主演和导演的电影,如何编写查询语句?
解决方案
在这种情况下,您可以使用 AQL NEIGHBORS 函数:
FOR n IN ANY @startId @@edgeCollection OPTIONS {bfs:true,uniqueVertices: 'global'}
RETURN n._id
ANY/INBOUND/OUTBOUND
确定边缘的方向,而@startId 是您的起始顶点(在本例中为 Stephen Crow),@@edgecollection 是您使用的边缘集合。
当应该应用两个条件(星号和定向)时,可以使用两个 NEIGHBOR 查询的 INTERSECTION。
以下 AQL 查询是您的用例的草稿:
FOR x IN INTERSECTION
((FOR y IN ANY 'star/StephenChow' star_in OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id),
(FOR y IN ANY 'star/StephenChow' director OPTIONS {bfs: true, uniqueVertices: 'global'} RETURN y._id))
RETURN x
可以在文档的Cookbook部分找到一个可用的 Actor/Movie 示例。
推荐阅读
- android - Android在网络连接上的片段上加载数据
- python - 此文档不支持此操作 - Sheets API
- c - C题变量的定义和声明
- active-directory - Active Directory:跟踪大型组成员身份更改
- python - AttributeError:模块 'tensorflow' 在 syft 导入中没有属性 '__version__'
- javascript - WebSocket 握手期间出错:意外的响应代码:socket.io-redis 中的 400
- python - 尝试在命令提示符下下载 pip 文件
- uikit - UIDatePickerStyle.compact 不适用于 13.7
- python - 将权重列表添加到已从 pandas 数据帧创建的边缘列表中,并将权重显示为图形中的边缘标签
- heroku - Heroku一直暂停应用程序