gv(1).id
给我顶点1 id,
gv(1).map
给我顶点 1 属性。
但是,我怎样才能同时得到一个带有 id 和propeties 的哈希
gv(1).id
给我顶点1 id,
gv(1).map
给我顶点 1 属性。
但是,我怎样才能同时得到一个带有 id 和propeties 的哈希
我知道这是一个老问题 - 所以下面的答案将适用于旧版本的 TinkerPop (3<); 如果有人(像我一样)偶然发现这个问题并寻找适用于 TinkerPop 3 的解决方案 - 可以通过使用“true”参数调用 valueMap 来实现相同的结果,如下所示:
gremlin> g.v(1).valueMap(true)
可以在此处的文档中找到参考
从 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}]
如果使用 Java 实现
g.V(1).valueMap().with(WithOptions.tokens).toList()
我找到了解决方案
tab = new Table()
g.v(1).as('properties').as('id').table(tab){it.id}{it.map}
tab
只是扩展@Stephen的答案;要在一个漂亮的单个 Map 中为 each获取id
和输出,只需在方法中使用plus或leftShift Map 操作。map()
Vertex
transform
免责声明:我正在使用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()
==>[[id:2, age:27, name:vadas], [id:4, age:32, name:josh], [id:3, name:lop, lang:java]]