在Gremlin上获取id +顶点的地图?

时间:2011-09-09 13:23:01

标签: graph-databases gremlin

  

g.v(1).ID

给我顶点1 id,

  

g.v(1).MAP

给我顶点1属性。

但是,我怎样才能同时获得带有id和propeties的哈希

5 个答案:

答案 0 :(得分:6)

我知道这是一个老问题 - 所以下面的答案将适用于旧版本的TinkerPop(3<);就好像有人(像我一样)偶然发现这个问题并寻找适用于TinkerPop 3的解决方案 - 通过使用'true'参数调用valueMap可以实现相同的结果,如下所示:

gremlin> g.v(1).valueMap(true)

参考可以在文档here

中找到

答案 1 :(得分:4)

从Gremlin 2.4.0开始,您还可以执行以下操作:

gremlin> g = TinkerGraphFactory.createTinkerGraph()
==>tinkergraph[vertices:6 edges:6]
gremlin> g.v(1).out.map('name','age','id') 
==>{id=2, age=27, name=vadas}
==>{id=4, age=32, name=josh}
==>{id=3, age=null, name=lop}

另一种使用transform()的替代方法:

gremlin> g.v(1).out.transform{[it.id,it.map()]}
==>[2, {age=27, name=vadas}]
==>[4, {age=32, name=josh}]
==>[3, {name=lop, lang=java}]

答案 2 :(得分:0)

我找到了解决方案

tab = new Table()
g.v(1).as('properties').as('id').table(tab){it.id}{it.map}
tab

答案 3 :(得分:0)

延伸@ Stephen的回答;要在每个id的单个地图中获取map()Vertex输出,只需使用{{1}中的plusleftShift地图操作}} 方法。

免责声明:我使用transform,我无法在groovy中对其进行测试(我想它完全正确同样的。)

Groovy代码

gremlin

println "==>" + g.v(1).out.transform{[id: it.id] + it.map()}.asList()

给出

println "==>" + g.v(1).out.transform{[id: it.id] << it.map()}.asList()

答案 4 :(得分:0)

如果使用Java来实现

g.V(1).valueMap().with(WithOptions.tokens).toList()