Dgraph:使用递归可以进行深度图遍历?

时间:2018-02-20 22:17:25

标签: database graph-databases dgraph

关于Dgraph关于图遍历的功能,我有几个问题。

假设我们有一个由post类型的节点组成的数据集。每个帖子都可以有n个帖子回复此帖子。这棵树的深度不受限制。

是否可以使用Dgraph从一个起始节点开始搜索所有叶节点并返回满足特定条件的所有叶子?

是否可以将深度限制设置为不会以巨大的数据集结束?

是否也可以找到满足特定条件的所有父节点的子节点?

最后:Dgraph中的边缘是否被指示?我可以在查询中包含它吗?

1 个答案:

答案 0 :(得分:6)

Dgraph的作者。

  

是否可以使用Dgraph从所有叶节点开始搜索   从一个起始节点返回所有满足某个特定的叶子   条件?

是。您可以使用recurse指令(https://docs.dgraph.io/query-language/#recurse-query)。

  

是否可以设置深度限制以避免巨大的结果   数据集?

是。递归支持最大深度。

  

是否也可以找到满足特定条件的所有父节点的子节点?

是。您可以遍历边缘,并在其上放置一个过滤器。 https://docs.dgraph.io/query-language/#applying-filters

  

最后:Dgraph中的边缘是否被指示?我可以在查询中包含它吗?

dgraph中的边缘是直接的。但是,Dgraph还支持“反向”索引,可用于自动生成反向边缘。然后,您可以通过在谓词名称前面添加波浪号(〜)来遍历这些反向边缘。

https://docs.dgraph.io/query-language/#reverse-edges