Я пытаюсь уменьшить свой код, но мне нужно несколько экземпляров данных этого типа:
g.addV('A').property('a-type','thing-x').property('a-value',1).next()
g.addV('A').property('a-type','thing-x').property('a-value',2).next()
...
g.addV('A').property('a-type','thing-x').property('a-value',n).next()
До «a-значения», равного n (например, 50).
# I tried a version of a loop I found here
# https://stackoverflow.com/questions/40907529/create-multiple-edges-having-vertex-id-number-0-to-49
#
g.inject((0..<50).toArray()).as('i').addV('a-value',select('i')).iterate()
Но я получаю сообщение об ошибке:
g.inject((0..<50).toArray()).as('i').addV('a-value',select('i')).iterate()
^
SyntaxError: invalid syntax
Каким будет правильный способ сделать это?
Обновлено: попытавшись опираться на ответ, я просто хотел бы добавить, что для моего случая вызов t.iterate()
внутри цикла for дает ожидаемый результат, но не так, если это вызывается вне цикла, как указано ниже.
Пример, который вы нашли, использовался внутри консоли Gremlin и, следовательно, с использованием конструкций Groovy. Из Python вы бы сделали что-то вроде:
for i in range(1,51):
g.addV('test').property('mykey',i).iterate()
Однако это добавит вершины по одной, поэтому лучше записывать их небольшими партиями, как здесь.
t = g.addV('test').property('mykey',1)
for i in range(2,51):
t.addV('test').property('mykey',i)
t.iterate()
Будет ли элегантный способ добавления ребер между соседними узлами - например. между 2 и 1 и 3, но не между 2 и 4, и так далее. Я могу создать отдельный вопрос, конечно.
Сохранение идентификаторов вершин и ребер в списке и итерация по нему с добавлением ребер в пакетах будет работать как одно простое решение.
Большое спасибо, это сработало! Все еще привыкаю к различному использованию между python и gremlin.