Gremlin GraphTraversalSource порождает случайный GraphTraversal - PullRequest
1 голос
/ 27 февраля 2020

Я пытаюсь использовать один GraphTraversal только для добавления всех вершин в удаленный дБ графа.
Однако я не могу сделать запрос на добавление таким, как:

GraphTraversalSource source = ...;
source.addV().addV().....next();

, потому что мне нужно чтобы выполнить обработку, чтобы получить каждую вершину, я думаю, что структура будет выглядеть следующим образом:

GraphTraversalSource source = ...;
GraphTraversal g = source.??; <create a graph traversal>

while (condition)
{
    ...
    g.addV();
}
...

g.next();

Идея - это GraphTraversalSource порождает graphTraversal, и его можно передавать, наконец, я использую шаг завершения, чтобы отправить команду в удаленный граф db .

Однако я не уверен, как заставить GraphTraversalSource создать правильный GraphTraversal в этом случае, хорошо ли подходит source.V ()? Я думаю, что это может создать ненужный шаг, чтобы найти все вершины.

1 Ответ

2 голосов
/ 27 февраля 2020

Вы могли бы inject() одноразовый объект, чтобы запустить поток:

GraphTraversalSource g = ...;
GraphTraversal t = g.inject(0);

while (condition)
{
    ...
    t.addV();
}
...

t.iterate();

Некоторым людям это не нравится, я полагаю, что в этом случае, я думаю, вам придется выполнить проверку null в некотором роде:

GraphTraversalSource g = ...;
GraphTraversal t = null;

while (condition)
{
    ...
    if (null == t)
    {
        t = g.addV();
    } 
    else 
    {
         t.addV();
    }

    ...
}
...

t.iterate();

Лично я думаю, что g.inject(0) имеет большой смысл, если вы думаете в терминах Gremlin, но я вижу, где другие могут предпочесть более явное создание t.

...