Самый простой способ реализовать номер строки в Gremlin - PullRequest
1 голос
/ 26 мая 2020

Мне нужно присвоить уникальное возрастающее значение всем вершинам в моем графике. В SQL я бы использовал ROW_NUMBER. Есть ли простой способ в Гремлине? Надеюсь на что-то вроде этого:

g.V().<some_step>()

Вывод:

1
2
3
...

Ответы [ 2 ]

3 голосов
/ 26 мая 2020

Не думаю, что я бы попробовал это на большом графике, но для графа скромного размера вы можете попробовать использовать шаг index. Ниже приведен пример, в котором используется набор данных о воздушных маршрутах.

index добавляет в список увеличивающееся значение индекса.

gremlin> g.V().limit(5).fold().index().unfold()
==>[v[0],0]
==>[v[1],1]
==>[v[2],2]
==>[v[3],3]
==>[v[4],4]

Используя область local, вы можете получить доступ к членам из этого списка.

gremlin> g.V().limit(5).fold().index().unfold().limit(local,1)
==>v[0]
==>v[1]
==>v[2]
==>v[3]
==>v[4]

Используя эти методы, мы могли бы использовать значение индекса для добавления нового свойства в каждый аэропорт. В этом примере я только что выполнил первые 5.

gremlin> g.V().limit(5).
               fold().index().unfold().as('list').
               limit(local,1).
               property('index',select('list').tail(local))

==>v[0]
==>v[1]
==>v[2]
==>v[3]
==>v[4]

И проверьте результаты.

gremlin> g.V(1).valueMap()
==>[country:[US],code:[ATL],longest:[12390],city:[Atlanta],index:[1],lon:[-84.4281005859375],type:[airport],elev:[1026
],icao:[KATL],region:[US-GA],runways:[5],lat:[33.6366996765137],desc:[Hartsfield - Jackson Atlanta International Airpo
rt]]


gremlin> g.V(2).valueMap()
==>[country:[US],code:[ANC],longest:[12400],city:[Anchorage],index:[2],lon:[-149.996002197266],type:[airport],elev:[15
1],icao:[PANC],region:[US-AK],runways:[3],lat:[61.1744003295898],desc:[Anchorage Ted Stevens]]
0 голосов
/ 26 мая 2020

В Gremlin такого шага нет, и я не знаю ни одной графической базы данных, которая изначально имела бы такую ​​функцию. Может быть, g sql, возможно, поскольку он поддерживается реляционными базами данных? Я думаю, что вам нужно будет управлять числом за пределами графика и использовать какой-либо механизм блокировки, чтобы отслеживать его самостоятельно.

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