2017-04-14 1 views
1

내가해야 할 일은 :MongoDB에서 많은 오브젝트를 검색하는 방법은 무엇입니까?

내가 날짜 범위에 따라 MongoDB의에서 CSV에 엄청난 양의 데이터 (미정 크기) 보내야합니다. (최소는 하루이며 최대 값은 없습니다.)

데이터 양은 매일 다릅니다.

내 문제 :

나는 mongoexport 사용에 대한 생각하지만 난 DB에 존재하지 않는 열을 추가해야합니다.

내 MongoDB 개체는 개별적으로 거대한 것은 아니지만 텍스트로만 구성되어 있지만 데이터베이스에 많은 개체가 있으며 많은 개체를 검색해야합니다. 나는 내 개체를 조회 할 NodeJS를 통해 몽고를 사용하고 그래서 때, 내가 가진 :

자바 스크립트 힙 메모리가 부족 내가 나를 방법에 대해 걱정하지 수 있도록하는 장기적인 해결책을 검색하고

내가 검색하려고 노력하는 여러 날의 데이터.

어떤 해결책이 있습니까?

답변

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

내가 시도했지만 불행하게도 여전히 "메모리 부족 자바 스크립트 힙을"가지고. – Juju

+0

@ Juju013 이제 예상대로 작동해야합니다. –

관련 문제