2017-04-14 55 views
1

我需要做的:如何檢索MongoDB中的很多對象?

我需要根據日期範圍從MongoDB中一個巨大的數據量(待定大小)導出爲CSV。 (最小值是一天,沒有最大值)

每天的數據量是不同的。

我的問題:

我想過使用mongoexport但我需要補充的是沒有在數據庫中存在的列。

我的MongoDB對象並不是很龐大,它們只與文本組成,但是我有很多它們在數據庫中,需要檢索它們中的很多。所以,當我使用蒙戈通過的NodeJS查詢我的對象,我有:

的JavaScript堆出來的內存

我正在尋找一個長期的解決方案,讓我不要擔心如何很多天我試圖檢索的數據。

任何解決方案(s)?

謝謝

回答

0

U可以使用cursor.streamcsv-write-stream像這樣創造的東西:

var MongoClient = require('mongodb').MongoClient; 
var csvWriter = require('csv-write-stream'); 
var fs = require('fs'); 

MongoClient.connect('mongodb://localhost:27017/test', function (err, db) { 
    var collection = db.collection('big_collection'); 
    var stream = collection.find().stream(); 
    var writer = csvWriter(); 
    writer.pipe(fs.createWriteStream('out.csv')); 
    stream.on('end', function() { 
     writer.destroy(); 
     db.close(); 
    }); 
    stream.on('data', function (data) { 
     Object.assign(data, {'some_extra_column' : ''}); 
    }); 
    stream.pipe(writer); 
}); 
+0

我試過,但不幸的是仍然有一個「JavaScript的堆內存不足」。 – Juju

+0

@ Juju013現在它應該按預期工作 –