【发布时间】:2019-09-10 07:38:48
【问题描述】:
更新 2:
原题太长,一个简单的办法:
在The City Graph,如何查询germanHighway可以从柏林直接到达的城市。我不想要internationalHighway。
原问题:
我现在使用 ArangoDB 来存储图表。我有一个关于数据模型设计的问题。
以 know_graph 为例,social_graph
在我原来的选择中,我想我会设计两个集合,Document集合是person,Edge集合是marriedWith或friendWith。
但是当我想查询marriedWith某人的人时,我无法过滤不需要的friendWith边缘。(我对AQL不是很熟悉,也许这不是真的)。
与AQL Documents中的示例相比,它用于定义更常见的边缘集合,例如social_graph中的relation,并在属性中定义更具体的类型。例如,"type":"married" 作为relation 的属性。
因此在 AQL 中,我可以使用 FILTER p.edges[0].type== 'married' 过滤不需要的关系。
我的问题是:
-
哪种数据模型设计方法更好,或者对此有何建议?
现在我想,把married作为一个人的类型,可能更灵活,很容易扩展到student,neighbour...用一个relation边缘集合。否则,应该创建许多 Edge 集合,
isStudent、neighbourWith...。 -
AQL 可以按边类型而不是属性过滤节点吗?也许看起来像:
FILTER 'isStudent' edge
更新:
我刚试过,一个关系只能用于两种节点类型。
例如,person 和dog 节点使用一个isFriend 边,那么dog 和cat 不能使用isFriend 边!
必须需要这么多边。
【问题讨论】: