Вы можете просто модулировать select()
, чтобы применить valueMap()
к каждому возвращаемому столбцу.Вот пример, использующий современный игрушечный граф, который поставляется с TinkerPop:
gremlin> g.V().as('a').out().as('b').select('a','b').by(valueMap())
==>[a:[name:[marko],age:[29]],b:[name:[lop],lang:[java]]]
==>[a:[name:[marko],age:[29]],b:[name:[vadas],age:[27]]]
==>[a:[name:[marko],age:[29]],b:[name:[josh],age:[32]]]
==>[a:[name:[josh],age:[32]],b:[name:[ripple],lang:[java]]]
==>[a:[name:[josh],age:[32]],b:[name:[lop],lang:[java]]]
==>[a:[name:[peter],age:[35]],b:[name:[lop],lang:[java]]]
, поэтому в вашем случае вы просто должны сделать:
GraphTraversal<?, ?> t1 = __.start().as("table1").out("relatesTo").hasLabel("table2").as("table2");
GraphTraversal<?, ?> t2 = g.V().hasLabel("table1").match(t1).select("table1", "table2").by(__.valueMap());
List<?> l = t2.toList();
Тем не менее, если вы не сократили свой коднемного для цели этого вопроса, я не уверен, что вижу необходимость в match()
в этом случае.Похоже, вы могли бы просто упростить это до:
List<?> l = g.V().hasLabel("table1").
out("relatesTo").hasLabel("table2").as("table2").
select("table1", "table2").
by(__.valueMap()).toList();