我正在使用gremlin控制台检查我的查询是否正常运行。我可以获取所需的数据,但顺序相反。 在查询结束时,我正在使用
values.('id','name').fold()
但是我得到的输出是[name id]。 如何获得作为[id name]的输出? 谢谢。
答案 0 :(得分:0)
克里姆林宫通常不做任何事情来保留顺序,而是依赖于基础图形数据库提供的顺序。如果需要订单,则需要以某种方式指定订单。我认为您可以使用union()
:
gremlin> g = TinkerFactory.createModern().traversal()
==>graphtraversalsource[tinkergraph[vertices:6 edges:6], standard]
gremlin> g.V(1).union(values('name'),values('age')).fold()
==>[marko,29]
gremlin> g.V(1).union(values('age'),values('name')).fold()
==>[29,marko]
我不确定依靠union()
是否是个好主意。像TinkerGraph应该遵守那里指定的顺序,但是我不确定其他图形是否会。也许更好的解决方案是使用order()
进行显式显示:
gremlin> g.V(1).properties('name','age').order().by(key).value()
==>29
==>marko
但这是按字母顺序排序的,而不是您键入它们的顺序。最终,尽管如果您只是验证结果,最好返回带有Map
的{{1}}
project()
如您所见,gremlin> g.V(1).project('name','age').by('name').by('age')
==>[name:marko,age:29]
gremlin> g.V(1).project('age','name').by('age').by('name')
==>[age:29,name:marko]
gremlin> g.V(1).project('age','name').by('age').by('name').next().getClass()
==>class java.util.LinkedHashMap
保留project()
,因为它使用order()
并按定义的顺序执行LinkedHashMap
调制器。这样做的好处是,您确实希望在最初的问题中使用您所询问的by()
格式,然后就可以从List
中获取值了:
Map
希望其中一种方法可以解决您的情况。