如何删除ArangoDb中的所有集合和文档

问题描述 投票:0回答:4

我正在尝试使用 Arango 组合一个单元测试设置。为此,我需要能够在每次测试时重置测试数据库。

我知道我们可以直接从 REST API 删除数据库,但文档中提到创建和删除可能“需要一段时间”。

这是进行此类设置的推荐方法吗?或者是否有 AQL 语句来执行类似的操作?

arangodb
4个回答
9
投票

在经历了类似的需求之后,我找到了这个解决方案:

for (let col of db._collections()) {

    if (!col.properties().isSystem) {
        db._drop(col._name);
    }
}

7
投票

例如,您可以检索所有集合(不包括系统集合)的列表,并删除截断它们。后者将删除所有文档并保留索引。或者,您可以使用 AQL REMOVE 语句。


3
投票

执行以下 AQL 查询将删除集合中的所有文档 yourcollectionname:

FOR u IN yourcollectionname
  REMOVE u IN yourcollectionname

https://docs.arangodb.com/3.11/aql/high-level-operations/remove/


2
投票

创建数据库可能确实需要一段时间(几秒钟)。如果在为每个测试设置和拆除环境的单元测试设置中成本太高,则有以下选项:

  • 每个测试套件(包含多个测试)仅创建和删除一次专用测试数据库,并创建/删除每个测试所需的集合。在许多情况下,这已经足够快了,但这取决于每个测试套件中包含多少测试。

  • 不要创建和删除专用的测试数据库,而只让每个测试创建和删除所需的集合。这是最快的选项,如果您在新数据库中开始每次测试运行,应该就足够了。然而,它需要测试来正确清理所有内容。这通常没有问题,因为无论如何测试通常都会使用专用集合。图形数据有一个例外:创建命名图形会将图形描述存储在

    _graphs
    集合中,并且必须再次从那里删除该图形。

© www.soinside.com 2019 - 2024. All rights reserved.