删除和重新创建的 ArangoDB 数据库保留集合

Dropped and Recreated ArangoDB Databases Retain Collections

部署脚本创建和配置数据库、集合等。该脚本包含在开始之前删除数据库的代码,以便测试它们可以正常进行。删除数据库并重新添加后:

var graphmodule = require("org/arangodb/general-graph");
var graphList = graphmodule._list();
var dbList = db._listDatabases();

for (var j = 0; j < dbList.length; j++) {
   if (dbList[j] == 'myapp')
       db._dropDatabase('myapp');
}

db._createDatabase('myapp');
db._useDatabase('myapp');

db._create('appcoll'); // Collection already exists error occurs here

之前添加到mydb的集合还在mydb中,但是它们是空的。对于我的特定用例来说,这并不是一个问题,因为集合是空的,而且我本来打算重建它们,但我更希望有一个干净的平板来进行测试,这种行为看起来很奇怪。

我尝试关闭 shell 并在删除和添加之间重新启动数据库,但这并没有解决问题。

有没有办法彻底删除并重新添加数据库?

调用 db._dropDatabase() 时应删除集合。 但是,如果您 运行 db._dropDatabase('mydb'); 直接跟在 db._createDatabase('mydb'); 之后,然后通过 db._collections() 检索集合列表,这将显示当前数据库中的集合(这可能是_system 数据库,如果你能够 运行 命令)?

这意味着您可能一直在查看 _system 数据库中的集合,除非您通过 db._useDatabase(name); 更改数据库。这解释了吗?

A​​rangoDB 存储 managed graphs 的附加信息;

因此,在使用命名图时,您应该使用the graph management functions删除图以确保系统中没有任何内容:

var graph_module = require("org/arangodb/general-graph");
graph_module._drop("social", true);

管理界面中图形查看器的当前实现将您的视图首选项(如应该成为图形标签的属性)存储在浏览器的本地存储中,因此这些功能无法实现。