Ali*_*i n 0 graph-databases gremlin titan tinkerpop3
我想知道如何有一个以嵌套格式返回结果的gremlin查询.假设有如下属性图:
USER和PAGE一些特性,如顶点AGE为USER顶点;
FOLLOW边缘USER和PAGE;
我正在寻找一个单一的高效查询,它为所有年龄大于20岁的用户提供所有跟随的用户.我可以使用来自应用程序端的简单循环来执行该操作,并且每次迭代使用简单的遍历查询.不幸的是,这样的解决方案对我来说效率不高,因为它会产生大量查询,并且在这种情况下网络延迟可能很大.
不确定您对"高效"的定义是什么,但请记住,这是典型的OLAP用例,您不应期望快速的OLTP实时响应.
也就是说,查询应该像下面这样简单:
g.V().has("USER", "AGE", gt(20)).as("user").
map(out("FOLLOW").fold()).as("pages").
select("user", "pages")
Run Code Online (Sandbox Code Playgroud)
使用现代样本图的一个小例子:
gremlin> g = TinkerFactory.createModern().traversal().withComputer()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], graphcomputer]
gremlin> g.V().has("person", "age", gt(30)).as("user").
map(out("created").fold()).as("projects").
select("user","projects")
==>[user:v[6], projects:[v[3]]]
==>[user:v[4], projects:[v[5], v[3]]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
627 次 |
| 最近记录: |