【问题标题】:Return subset of properties from a node through Gremlin query通过 Gremlin 查询从节点返回属性子集
【发布时间】:2012-05-06 20:06:40
【问题描述】:

有没有办法通过 Gremlin 查询仅返回图形节点的所有属性的子集?

我知道您可以使用转换管道连接属性值,但我更感兴趣的是获得结构化结果(如 propertyName1 = value1,propertyName2 = value2)。

【问题讨论】:

    标签: gremlin


    【解决方案1】:

    假设您使用的是 Gremlin-Groovy,我发现使用 Groovy 的 each 构造是一种从 Gremlin 查询结果创建我自己的对象的有用方法。例如:

    nodes = []
    g.V.each{ node ->
      nodes += [ propertyName1 : node.value1, propertyName2 : node.value2 ]
    }
    

    现在您有一个 Map 对象列表,表示从您的查询返回的节点。这可能不是最有效的方式,但它非常灵活。

    【讨论】:

      【解决方案2】:

      从 Gremlin 2.4.0 开始,您可以:

      gremlin> g = TinkerGraphFactory.createTinkerGraph()
      ==>tinkergraph[vertices:6 edges:6]
      gremlin> g.v(1).out.map('name')
      ==>{name=vadas}
      ==>{name=josh}
      ==>{name=lop}
      gremlin> g.v(1).out.map('name','age')
      ==>{age=27, name=vadas}
      ==>{age=32, name=josh}
      ==>{age=null, name=lop}
      

      【讨论】:

        【解决方案3】:

        可以做this:

        如果数据是:

        gremlin> g.E.has('weight', T.gt, 0.5f).outV.age
        ==>32
        ==>29
        

        那么要做的查询是:

        gremlin> g.E.has('weight', T.gt, 0.5f).outV.transform{[id:it.id,age:it.age]}
        ==>{id=4, age=32}
        ==>{id=1, age=29}
        

        【讨论】:

          【解决方案4】:

          你看过使用 Table 吗?

          样本来自:Gremlin Wiki

          gremlin> t = new Table()                                                       
          gremlin> g.v(1).out('knows').as('x').out('created').as('y').table(t){it.name}{it.name}
          ==>v[5]
          ==>v[3]
          gremlin> t
          ==>[x:josh, y:ripple]
          ==>[x:josh, y:lop]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多