有没有办法只使用Gremlin查询返回图节点的所有属性的子集?
我知道你使用转换管来连接属性值,但我更感兴趣的是获得结构化结果(比如propertyName1 = value1,propertyName2 = value2)。
答案 0 :(得分:0)
您是否看过使用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]
答案 1 :(得分:0)
假设您正在使用Gremlin-Groovy,我发现使用Groovy的每个构造都是从Gremlin查询结果创建自己的对象的有用方法。例如:
nodes = []
g.V.each{ node ->
nodes += [ propertyName1 : node.value1, propertyName2 : node.value2 ]
}
现在您有一个Map对象列表,表示从查询返回的节点。这可能不是最有效的方式,但它非常灵活。
答案 2 :(得分:0)
从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 :(得分:0)
可以执行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}