2016-05-17 40 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