#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)