【发布时间】:2020-06-19 07:15:13
【问题描述】:
一个样本顶点
g.addV('a').property('vehicle','v1').property('time',1000).property(list,'vehicle','v2').property(list,'time',830)
我们如何将属性“vehicle”中的值映射到属性“time”中的值。 我厌倦了下面的代码
g.V(1).hasKey('vehicle').map(hasKey('time'))
为了找到我厌倦了遵循代码的路径
g.V().hasLabel('a').repeat(out().simplePath()).until(hasLabel('h')).path().by(union(label(),values('vehicle','time')).fold())
你能帮帮我吗
【问题讨论】:
-
我的顶点标记为 A :id,1,vehicle:[v1,v2,v4],time:[1000,800,830],B :id,2,vehicle:[v1,v3], time:[1030,830],C :id,3,vehicle:[v1,v3,v4],time:[1100,930,920],如何沿着 A 到 C 的路径显示直接路径和间接路径 (显示直接和连接车辆) [[A,10.00,v1],[B,10.30,v1],[C,11.00,v1]], [[A,8.00,v2],[B,830,v3],[ C,930,v3]], [[A,830,v4],[C,920,v4]] ,我厌倦了上面提到的以下代码
-
正如我在您的其他问题之一中提到的,更改数据模型将使查询更易于编写。与其保留值列表(图形数据库可能无法保证的顺序)并尝试将它们本质上压缩在一起,为什么不使用节点和边对车辆和时间进行建模呢?例如:A -- time:10--> Vehicle[vehicleId:V1]
-
如果您使用在线 Groovy lambda 语法,您可以使用当前数据模型轻松完成您需要的操作,但问题是该查询无法移植到所有图形数据库。有些不允许查询中的行代码。但同样,只有当图形数据库按照您期望的顺序保持列表的值时,这才有效。可能不会。
-
gremlin> g.V().hasLabel('a').map{a=it.get().values('vehicle');b=it.get().values('time ');[a.toList(),b.toList()].transpose()} ==>[[v1,1000],[v2,830]]
-
您能否提供一个示例图数据模型和该模型的解决方案
标签: gremlin tinkerpop gremlin-server