g.v(1).id
这将给我顶点1的ID。
g.v(1).map
这将给我顶点1的属性。
但是,如何同时获取带有ID和属性的哈希值?
g.v(1).id
这将给我顶点1的ID。
g.v(1).map
这将给我顶点1的属性。
但是,如何同时获取带有ID和属性的哈希值?
我知道这是一个老问题,因此下面的答案适用于旧版本的TinkerPop(3<); 只有当有人(像我一样)偶然发现这个问题并寻找在TinkerPop 3上有效的解决方案时,才可以通过带有“true”参数的valueMap调用来实现相同的结果,就像这样:
gremlin> g.v(1).valueMap(true)
相关文档可在此处找到。
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}]
if implementing with Java use
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的答案基础上进行扩展;要想获得每个Vertex
的id
和map()
输出的漂亮单一Map,只需在transform
方法中使用plus或leftShift Map操作即可。
免责声明:我正在使用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]]
gremlin> g.v(1).valueMap().with(WithOptions.tokens)
。 - Xogaz