【问题标题】:How to get properties from multiple vertexes in gremlin如何从gremlin中的多个顶点获取属性
【发布时间】:2022-01-14 03:00:17
【问题描述】:

如何从 gremlin 中的多个顶点获取属性。

从上图中,我需要从user 收集“姓名”,从email 顶点收集电子邮件ID,从phone_number 顶点收集电话号码。是否可以在一个查询中收集所有属性?

我尝试了以下查询,但它返回 emailphone_number 作为单独的项目

g.V().hasLabel('user').as('u').outE('owns')
.inV().hasLabel('email', 'phone_number').as('e', 'p').select('u', 'e', 'p').by(elementMap('name')).by(elementMap()).by(elementMap())

输出

{'u': {<T.id: 1>: '124848d5-f387-48eb-bbb7-ad193ef6070a', <T.label: 4>: 'user', 'name': 'Thirumal'}, 'e': {<T.id: 1>: '922f4ac1-9c6d-40fa-bac2-682e0f01673a', <T.label: 4>: 'phone_number', 'phone_number': '+918973697871'}, 'p': {<T.id: 1>: '922f4ac1-9c6d-40fa-bac2-682e0f01673a', <T.label: 4>: 'phone_number', 'phone_number': '+918973697871'}}

{'u': {<T.id: 1>: '124848d5-f387-48eb-bbb7-ad193ef6070a', <T.label: 4>: 'user', 'name': 'Thirumal'}, 'e': {<T.id: 1>: '2c3f90a4-d8bd-4cf5-9ff0-d4e3a6cf1190', <T.label: 4>: 'email', 'email': 'thirumal@enkindletech.com'}, 'p': {<T.id: 1>: '2c3f90a4-d8bd-4cf5-9ff0-d4e3a6cf1190', <T.label: 4>: 'email', 'email': 'thirumal@enkindletech.com'}}

【问题讨论】:

    标签: gremlin tinkerpop tinkerpop3 gremlin-server


    【解决方案1】:

    此类问题一般由project()处理:

    g.V().hasLabel('user').
      project('name','email','phone').
        by('name').
        by(out('owns').hasLabel('email').values("email")).
        by(out('owns').hasLabel('phone_number').values('phone_number'))
    

    【讨论】:

      猜你喜欢
      • 2019-08-24
      • 2021-01-08
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 2021-07-13
      • 1970-01-01
      • 2015-04-19
      相关资源
      最近更新 更多