Несколько свойств запроса гремлина с неизвестным числом

Я пытаюсь добавить несколько свойств к вершине гремлина. Каждый раз у меня есть разное количество свойств и разные свойства, поэтому мне нужно сделать запрос динамическим на основе карты для создания или обновления свойств. Я нашел этот gremlin python - добавить несколько, но неизвестное количество свойств к вершине и попытаться сделать то же самое с той разницей, что я создаю экземпляр jansugraph, но получаю сообщение об ошибке. Любые идеи будут более чем приветствоваться.

Приведенное ниже написано непосредственно в консоли gremlin, затем я переведу его на Java-код.

graph =JanusGraphFactory.open("conf/test.properties")
g = graph.traversal()
test = [["testKey":"testValue"]]
g.inject(test).unfold().as("test")
 .V(20704).as("v").sideEffect(select("test"))
 .unfold().as("kv").select("v")
.property(select("kv").by(Column.keys),select("kv").by(Column.values)).iterate()

и я получаю ошибку

The provided object does not have accessible keys: class org.janusgraph.graphdb.vertices.CacheVertex
Type ':help' or ':h' for help.
Display stack trace? [yN]y
java.lang.IllegalArgumentException: The provided object does not have accessible keys: class org.janusgraph.graphdb.vertices.CacheVertex

Любые идеи, что я делаю неправильно, я не могу найти, что использовать для ключей и значений, касающихся Януса


person jim    schedule 30.03.2020    source источник
comment
Я думаю, вы закрыли sideEffect слишком рано. Я считаю, что остальная часть запроса до iterate() должна быть внутри sideEffect.   -  person Kelvin Lawrence    schedule 30.03.2020
comment
о, спасибо, мое плохое. Публикация не нужна   -  person jim    schedule 30.03.2020
comment
Не беспокойтесь, я добавлю ответ на случай, если у других возникнут похожие проблемы.   -  person Kelvin Lawrence    schedule 30.03.2020
comment
Кстати, можно ли сделать то же самое для ребер, просто изменив V на E? Поскольку я пробовал и получаю другую ошибку. Спасибо   -  person jim    schedule 30.03.2020


Ответы (1)


Основная часть запроса должна находиться внутри шага sideEffect. Так что-то вроде ...

g.inject(test).unfold().as("test").
  V(20704).as("v").
  sideEffect(select("test").
     unfold().as("kv").
     select("v").
     property(select("kv").by(Column.keys),
              select("kv").by(Column.values))).
  iterate()
person Kelvin Lawrence    schedule 30.03.2020