V (выбрать ("id")) возможно - PullRequest
0 голосов
/ 18 июня 2019

Я хотел бы изменить свойства нескольких вершин без использования длинных обходов (см. http://tinkerpop.apache.org/docs/current/recipes/#long-traversals).. Из соображений производительности у меня есть локальный кеш идентификаторов вершин.

Я хотел бы сделать кодкак (в Tinkerpop 3.3.3):

var list = [ ["id": 123, "prop": "foo"], ["id": 456, "prop": "bar"] ];
g.inject(list)
    .unfold()
    .as("map")
    .V(__.select("id"))
    .property("prop", __.select("map").select("prop"))
    .iterate();

Но я получил следующее исключение:

java.lang.IllegalArgumentException: Expected an id that is convertible to Long but received class com.dcbrain.flowengine.dsl.DefaultFlowEngineTraversal
    at org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph$DefaultIdManager$1.convert(TinkerGraph.java:587)
    at org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerGraph.lambda$createElementIterator$4(TinkerGraph.java:316)

Есть ли обходной путь или другая версия Tinkerpop поддерживает это?

1 Ответ

0 голосов
/ 18 июня 2019

Я нашел другой способ создания запроса:

var map= [ 123 : "foo"], [456 : "bar"];
g.withSideEffect("map", map)
    .V(map.keySet().toArray())
    .as("id")
    .property("prop", __.select("map").select(__.select("id").by(T.id)))
    .iterate();
...