2017-04-14 68 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现在它应该按预期工作 –