【发布时间】:2017-08-02 17:29:38
【问题描述】:
我刚刚开始使用 arangodb,并遇到了我的第一个真正问题:
是否可以搜索连接到所有多个其他节点的节点?这似乎是图形数据库的基本操作,但我想不出解决方案。
作为参考,如果我们采用“知道”示例图,我想知道哪些人知道 Charlie 和 Dave(应该只有 Bob)
knows example graph(还不允许嵌入图片)
目前我最好的猜测是开始遍历所有“目标”并自己减少和过滤响应,这真的是唯一的方法吗?
编辑: 好的,为了进一步说明我添加了另一个连接,eve 也认识 dave,但不应该返回,因为她不认识 charlie
编辑2: 到目前为止,我已经提出了这个查询
FOR start IN ['persons/charlie', 'persons/dave']
LET knownBy = (FOR v,e,p IN 1 INBOUND start knows
RETURN v)
FOR p IN knownBy
COLLECT person = p
LET knows = (FOR v IN 1 OUTBOUND person._id knows
RETURN v._id)
FILTER knows ALL IN ['persons/charlie', 'persons/dave']
RETURN person
但是,这感觉有点不自然,让“X”认识的人得到认识“X”的人......此外,分析器显示大约三分之一的时间用于优化计划,应该有更好的解决方案吧?
【问题讨论】: