Я пытаюсь выяснить, как обновить граничные документы, используя запрос обхода графа в arangodb. Я могу сделать это с помощью стандартного
FOR e IN collectionName UPDATE e with {newProps} IN collectionName
. Однако я не могу понять, что не так с моей попыткой сделать то же самое, используя
FOR v, e, p IN 1..5 OUTBOUND @startId GRAPH @graphName
синтаксис.
Я использую изображение док-станции arangodb: latest на macOS Mojave 10.14.3, и я использую библиотеку go arango (github.com/arangodb/go-driver) для запроса, создав строку запроса и отправив ее с помощью базы данных Функция .Query (). Я попытался просто вернуть ключ для ребра, которое я пытаюсь обновить (т.е. просто вернуть e._key
вместо попытки обновления в приведенном ниже запросе), и подтвердил, используя arangosh, что это действительно правильный ключ ребра, который я пытаюсь обновить. Кроме того, как указано выше, я смог обновить ребро, используя реляционный синтаксис AQL.
Вот мой запрос:
FOR v, e, p IN 1..5 OUTBOUND @startId GRAPH @graphName
FILTER e.@key0 == @val0
UPDATE e._key WITH {@propName0: @propValue0} IN has_skill
RETURN {new: NEW, old: OLD}
и вот мои переменные связывания:
[graphName:Matthew_Loughney, key0:_from, propName0:testProp, propValue0:testVal, startId:applicant/232, val0:applicant/232]
Я ожидаю, что при просмотре коллекции has_skill
с использованием arangosh я увижу, что теперь у моего края есть свойство testProp
со значением testVal
; однако вместо этого я просто получаю ошибку AQL: document not found (while executing)
, и мое преимущество остается неизменным.