2016-07-19 12 views
2

Назад с другим вопросом о arango.Arange AQL Remve Document and Edges

Есть ли простой способ удалить документ и все его края? Является ли это решение рекурсивным?

Снова скажем, у меня есть что-то вроде ниже.

  • Круг хранится в коллекции документов.
  • Площадь хранится в коллекции документов.

Тогда у меня есть два Пограничные Коллекции HAS_CIRCLE и HAS_SQUARE, которые соответствуют надлежащим образом к различным \ указанного.

Circle A 
    /  \ 
Square 1 Circle B 
      / \   \ 
     Circle C Square 2 Square 3 
    /
    Square 4 

Если я хочу, чтобы удалить Circle B. Затем я также хотел, чтобы удалить Circle C, площадь 2, площадь 3, и площадь 4. Наряду со всеми краями.

Так что в основном я бы закончил.

Circle A 
    / 
Square 1 

В настоящее время мой подход состоит в том, чтобы получить все ключи для ребер Circle C и связанных с ними документов. Затем я делаю это рекурсивно с помощью javascript. Я использую модуль arangojs и использую removeByKeys, когда у меня есть то, что мне нужно.

Неуверенный, если была какая-то магия, мне не хватает.

ответ

1

Это работает так, что вы должны сначала выяснить все идентификаторы документов, которые вы хотите удалить, и сохранить его вместе с коллекцией в которой они находятся.

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

Вы можете найти пример AQL-запросов, как достичь этого в очень похожим вопросе Safe removal of vertexes in ArangoDB (using _ids)?.