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

发布于 2024-12-04 01:58:24 字数 172 浏览 1 评论 0 原文

gv(1).id

给我顶点 1 id,

gv(1).map

给我顶点 1 属性。

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

g.v(1).id

gives me vertex 1 id,

g.v(1).map

gives me vertex 1 properties.

But, how can I get a hash with id and propeties at the same time

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

断桥再见 2024-12-11 01:58:24

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

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

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

I know that it's an old question - so answers below will work on older versions of TinkerPop (3<); just if anyone (like me) stumbles upon this question and looks for a solution that works on TinkerPop 3 - the same result can be achieved by calling valueMap with 'true' argument, like this:

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

reference may be found in docs here

十年不长 2024-12-11 01:58:24

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

As of Gremlin 2.4.0 you can also do something like:

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}

Another alternative using 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}]
空心↖ 2024-12-11 01:58:24

如果使用Java实现

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

if implementing with Java use

g.V(1).valueMap().with(WithOptions.tokens).toList()
深巷少女 2024-12-11 01:58:24

我找到了解决方案

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

I've found a solution

tab = new Table()
g.v(1).as('properties').as('id').table(tab){it.id}{it.map}
tab
陈独秀 2024-12-11 01:58:24

只是扩展@Stephen的答案;要在每个 Vertex 的单个 Map 中获取 idmap() 输出,只需使用 plusleftShift transform 方法中的映射操作。

免责声明:我使用的是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]]

Just extending on @Stephen's answer; to get the id and the map() output in a nice single Map for each Vertex, just use the plus or leftShift Map operations in the transform method.

Disclaimer: I'm using groovy, I haven't been able to test it in gremlin (I imagine it's exactly the same).

Groovy Code

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

or

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

Gives

==>[[id:2, age:27, name:vadas], [id:4, age:32, name:josh], [id:3, name:lop, lang:java]]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文