следующий параметризованный скрипт на java не поддерживается?почему?

#gremlin #janusgraph #gremlin-server

#gremlin #janusgraph #gremlin-сервер

Вопрос:

я отправляю параметризованный скрипт на удаленный gremlin-сервер, но некоторые сценарии успешны, некоторые сценарии неверны.

например, следующий тестовый случай выполнен успешно, и сервер gremlin возвращает ожидаемый результат

 List<Long> ids = Lists.newArrayList(19496288L, 40076200L, 8717992L, 36070256L, 39303024L, 53232552L);
Map<String, Object> parameters = new HashMap<>();
parameters.put("ids1", ids);
parameters.put("ret", new String[]{"linkid", "locnwid", "remnwid"});

String strIds = "19496288,40076200,8717992,36070256,39303024,53232552";
String script = String.format("g.V(ids1).outE('L2_LINK').where(otherV().hasId(%s)).valueMap(ret).by(unfold())", strIds)
// this query script is also ok
// String.format("g.V().hasId(ids1).outE('L2_LINK').where(otherV().hasId(%s)).valueMap(ret).by(unfold())", strIds)
client.submit(script, parameters).all().get()

 

но следующий тестовый пример неверен, сервер gremlin ничего не возвращает

 List<Long> ids = Lists.newArrayList(19496288L, 40076200L, 8717992L, 36070256L, 39303024L, 53232552L);
Map<String, Object> parameters = new HashMap<>();
parameters.put("ids1", ids);
parameters.put("ret", new String[]{"linkid", "locnwid", "remnwid"});

String strIds = "19496288,40076200,8717992,36070256,39303024,53232552";
String script = String.format("g.V(%s).outE('L2_LINK').where(otherV().hasId(ids1)).valueMap(ret).by(unfold())", strIds)

client.submit(script, parameters).all().get()
 

в моем втором сценарии запроса есть какая-то ошибка? как это исправить?

еще один вопрос:

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

Ответ №1:

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

 String script = String.format("g.V(ids1).outE('L2_LINK').where(otherV().id().is(within(ids1))).valueMap(ret).by(unfold())", strIds)