как использовать предыдущий сохраненный предмет после сгиба гремлина - PullRequest
0 голосов
/ 28 августа 2018

Во-первых, я использую Azure Cosmos Graph db.

Я вижу такой шаблон довольно немного:

out('an-edge').fold().coalesce(unfold(),addV('incoming-schedule'))

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

g.V('any-vertex-id').as('a').out('an-edge').coalesce(unfold(),addV('new-vertex').addE('to-v').from('a'))

"a", кажется, больше не существует после fold (), так как это барьерный шаг. Я пытался хранить и объединять, но я не должен понимать это должным образом Можно ли получить ссылку после сгиба ()? Мне это нужно, потому что он может ссылаться на предыдущий addV в запросе, к которому у меня еще не было идентификатора

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Какое ваше требование здесь? Хотите ли вы создать новую вершину ребро только тогда, когда out ('an-edge') нет?

Если это так, я попробую это:

g.V('any-vertex-id').as('a').coalesce(out('an-edge'), addV('new-vertex').addE('to-v').from(select('a')))

Fold () обычно используется, когда нужно агрегировать все выходные данные предыдущего шага. Я не думаю, что это необходимо в этом случае.

http://tinkerpop.apache.org/docs/current/reference/#fold-step

0 голосов
/ 28 августа 2018

Похоже, я могу сохранить, а затем выбрать из него при добавлении края.

g.V('any-vertex-id').store('a').out('an-edge').fold()
           .coalesce(unfold(),addV('new-vertex')
                    .addE('to-v').from(select('a').unfold()))

Не уверен, если у кого-то есть лучшая альтернатива или лучшее предложение, чем хранить, но, похоже, это работает, по крайней мере, в моем сценарии

...