2016-05-17 41 views
1

据我所知,arangoimp函数可以将文档数组导入到一个新的集合中。从aql查询数组导入arangodb

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

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

也许我在这里错过了一些明显的东西,但本周我有点时间试着找出答案。感激地收到了所有的想法或建议。

+0

是你加入ArangoDB或遗留数据库吗?在ArangoDB中,您肯定可以直接将连接的文档插入到新的集合中。 – dothebart

+0

@Guido:您的输入数据是否位于ArangoDB中,或者您是否想从其他DBMS导入数据? – CoDEmanX

+0

我想要的数据位于一个文本文件中,我想在导入期间加载并运行转换。该文件足够大,可以轻度刺激(〜1GB),但我的工作是导入到临时集合中,运行查询以创建新集合并删除临时集合... – Guido

回答

0

据我所知,并纠正我,如果我错了,你想使其自动化。首先它会执行复杂的连接,然后将输出数组存储在一个新的集合中。

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

Database = require('arangojs').Database; 
    db = new Database({url:'http://myapp:[email protected]: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

+1

工作正常。我刚刚连接到远程Arangodb服务器时遇到了一些问题。为了记录,这似乎工作: 'Database = require('arangojs')。Database; db = new Database({url:'http:// myapp:_password_ @ myapp-server:8529',databaseName:'myapp-db'});' myapp是用户名myapp-server和myapp- db是服务器和数据库名称 (服务器正在默认的8529端口上运行......) – Guido

+0

您是对的。我会根据你的意见修改我的答案。谢谢 – Lashuel