【问题标题】:Arangodb import from aql query array从 aql 查询数组导入 Arangodb
【发布时间】:2016-06-14 13:17:25
【问题描述】:

据我了解,arangoimp 函数可以将文档数组导入到新集合中。

因为我以文档数组的形式输出了复杂连接的输出,我想将其创建为新集合。鉴于此,有没有办法在数组上执行 arangoimp 作为查询的一部分,或者说,arangosh?

否则,我的选择是: 1)只需将其吸起来并遍历数组并保存文档;或者 2) 将数组转储到文件并使用 arangoimp 导入...

也许我在这里遗漏了一些明显的东西,但我这周有一点时间尝试找出答案。感谢所有想法或建议。

【问题讨论】:

  • 您加入的是 ArangoDB 还是旧版数据库?在 ArangoDB 中,您肯定可以直接将连接的文档插入到新集合中。
  • @Guido:您的输入数据是驻留在 ArangoDB 中,还是要从另一个 DBMS 中导入?
  • 我想要的数据位于一个文本文件中,我想在导入期间加载并运行转换。该文件大到足以引起轻微刺激(~1GB),但我的工作是导入临时集合,运行查询以创建新集合并删除临时集合......

标签: arangodb arangojs


【解决方案1】:

我理解并纠正我的错误,你想让它自动化。首先它将执行复杂的连接,然后将输出数组存储在一个新的集合中。

因此,基于此,您可以使用arangojs driver 编写代码。

  Database = require('arangojs').Database;
  db = new Database({url:'http://myapp:_password_@myappserver:8529',databaseName:'myapp-db'});
    var collection = db.collection(collectionName);
    db.query(yourQuery).then(cursor=> {
                return cursor.all();
                 }).then(list =>{
                  collection.import(list);
                });

我还没有测试过代码。你可以在这里找到更多Bulk importing documents

【讨论】:

  • 那行得通。我只是在连接到远程 Arangodb 服务器时遇到了一些问题。作为记录,这似乎有效:Database = require('arangojs').Database; db = new Database({url: 'http://myapp:_password_@myapp-server:8529', databaseName: 'myapp-db' }); 其中 myapp 是用户名,myapp-server 和 myapp-db 是服务器和数据库名称(服务器在默认的 8529 端口上运行......)
  • 你是对的。我将根据您的输入修改我的答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2021-08-02
相关资源
最近更新 更多