7

gv(1).id

给我顶点1 id,

gv(1).map

给我顶点 1 属性。

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

4

5 回答 5

12

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

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

可以在此处的文档中找到参考

于 2017-03-17T23:47:14.487 回答
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}]
于 2013-08-17T14:07:59.660 回答
1

如果使用 Java 实现

g.V(1).valueMap().with(WithOptions.tokens).toList()
于 2019-11-13T16:37:21.940 回答
0

我找到了解决方案

tab = new Table()
g.v(1).as('properties').as('id').table(tab){it.id}{it.map}
tab
于 2011-09-15T15:12:11.247 回答
0

只是扩展@Stephen的答案;要在一个漂亮的单个 Map 中为 each获取id和输出,只需在方法中使用plusleftShift Map 操作。map()Vertextransform

免责声明:我正在使用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]]
于 2015-04-13T04:42:20.240 回答