Невозможно получить доступ к определенной вершине по ID, используя TinkerGraph в Gremlin Console - PullRequest
0 голосов
/ 18 сентября 2018

Я не могу выбрать конкретную вершину, выполнив g.V(3640).valueMap(true).unfold().Кажется, что любая команда, содержащая идентификатор в скобках в команде g.V(), не работает.

Вот что я сделал:

Я новичок в базах данных Graph и экспериментирую с консолью Gremlin.Я начал с создания экземпляра:

graph = TinkerGraph.open()
g=graph.traversal()

и загрузки образцов данных, импортировав файл базы данных .graphml:

g.io(graphml()).readGraph('/full/path/to/air-routes-latest.graphml')

, который, казалось, работал нормально, потому что подсчет дает хороший результатназад

gremlin> g.V().count()
==>3642

К сожалению, следующее не работает:

gremlin> g.V(3640).valueMap(true).unfold()

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

gremlin> g.V()
==>v[3640]
==>v[2306]
...

идентификатор действительно кажетсясуществовать.Любые идеи, почему я не могу получить доступ к конкретному идентификатору?Я пробовал разные команды, но g.V(), кажется, работает нормально, а g.V(3640) - нет.Это потому, что я использую TinkerGraph вместо базы данных Gremlin, в чем может быть проблема?

РЕДАКТИРОВАТЬ:

Кажется, что мои идентификаторы были сохранены как строки, потому чтоg.V("2").valueMap(true).unfold() дает мне результаты.

1 Ответ

0 голосов
/ 18 сентября 2018

Я думаю, что у вас, вероятно, есть проблема с "типом" идентификатора.Я подозреваю, что если вы сделаете:

g.V(3640L)

, вы получите желаемую вершину.По умолчанию TinkerGraph обрабатывает равенство идентификаторов с помощью equals(), поэтому, если вы попытаетесь найти целое число, когда идентификатор длинный, он будет действовать так, как будто его там нет.Вы можете изменить это значение по умолчанию, если вам нравится с IdManager конфигурацией, обсуждаемой здесь .Обратите внимание, что это также обсуждается более подробно в Practical Gremlin .

...