如何在Gremlin中获取一个顶点的id和映射?

7

g.v(1).id

这将给我顶点1的ID。

g.v(1).map

这将给我顶点1的属性。

但是,如何同时获取带有ID和属性的哈希值?

5个回答

13

我知道这是一个老问题,因此下面的答案适用于旧版本的TinkerPop(3<); 只有当有人(像我一样)偶然发现这个问题并寻找在TinkerPop 3上有效的解决方案时,才可以通过带有“true”参数的valueMap调用来实现相同的结果,就像这样:

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

相关文档可在此处找到。


6
此功能已被弃用。在3.4版本发布时(参见升级说明),您应该使用 gremlin> g.v(1).valueMap().with(WithOptions.tokens) - Xogaz

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}]

1

if implementing with Java use

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

0

我找到了一个解决方案

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

0

在@Stephen的答案基础上进行扩展;要想获得每个Vertexidmap()输出的漂亮单一Map,只需在transform方法中使用plusleftShift Map操作即可。

免责声明:我正在使用groovy,我无法在gremlin中测试它(我想它应该是完全相同的)。

Groovy代码

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]]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接