Почему gremlin-сервер не возвращает ребро по своему идентификатору?

#java #gremlin #gremlin-server

Вопрос:

Я использую gremlin-сервер 3.4.11 и подключаюсь к нему с помощью java-драйвера gremlin tinkerpop.

g.E() возвращает все ребра:

 [
  {
    "id": 18,
    "label": "RELATED",
    "type": "edge",
    "inVLabel": "GREMLIN2",
    "outVLabel": "GREMLIN1",
    "inV": 16,
    "outV": 14
  }
]
 

но g.E(18) ИЛИ g.E().hasId(18) возвращает пустой список:

 []
 

Это почему? Я бы предположил, что соответствующее ребро будет возвращено, но это не так. Что я здесь упускаю?

Примечание: Я попытался создать ребро с g.V(14).addE('RELATED').property('id', 'someId').to(g.V(16)) помощью .. это затем найдено с g.E().has('id', 'someId') помощью , НО это не идентификатор ребра, а просто свойство с именем «id». hasId() шаг также возвращает пустой список.

Любые намеки будут высоко оценены!

Ответ №1:

Вы используете TinkerGraph? Это да, идентификаторы хранятся как long внутренние.

Пожалуйста, попробуйте g.E(18L)

Комментарии:

1. вы правы, он работает с «18L», спасибо! Вы случайно не знаете, почему это работает с вершинами? g.V(’14’), g.V(14), g.V().хасИд(14), g.V().хасИд(’14’) возвращает вершину