2017-02-07 1 views
2

MongoDB 데이터베이스에 문서 파일을 저장하는 작은 프로젝트를 만들고 있습니다. 나는 문서 파일을 MongoDB에 직접 저장할 수는 없다고 들었지만 Google 드라이브 나 dropbox 등에 저장할 수있는 반면, 거기에서 참조 할 수 있습니다. 누가이 프로젝트를 도와 줄 수 있는지 잘못되었거나 잘못 되었습니까? 나는 나의 프로젝트를 이해하기위한 참고서를 만들었습니다. 내 plunker 링크는 한 번 봐 주시고 가장 좋은 방법을 알려주시겠습니까?MongoDB 데이터베이스에 파일을 저장하는 방법은 무엇입니까?

<https://plnkr.co/edit/RwjmCynuvzj8reqv2pw6?p=preview> 

답변

0

큰 파일을 MongoDB에 저장할 수 있습니다. 살펴보기 https://www.mongodb.com/blog/post/storing-large-objects-and-files-in-mongodb

MongoDB는 BSON이라는 이진 형식으로 개체를 저장합니다. BinData는 이진 바이트 배열에 대한 BSON 데이터 형식입니다. 그러나 MongoDB 객체는 일반적으로 크기가 4MB로 제한된 입니다. 이 문제를 해결하기 위해 파일은 인데 각각 4MB 미만인 여러 개체에 "덩어리가 찍힌"파일입니다. 여기에는 이 있는데 주어진 파일의 특정 범위를 효율적으로 검색 할 수있는 이점이 있습니다.

0

당신은 아래의 코드를 시도 할 수 있습니다 -

mongoose.connect(<mongodbUri>); 

var lineList = fs.readFileSync(<filepath>).toString().split('\n'); 
lineList.shift(); 

//creating schema for database. As an example you can see below - 
var schemaKeyList = ['EmployeeID', 'Designation', 'Address']; 

var EmployeeSchema = new mongoose.Schema({ 
    EmployeeID: String, 
    Designation: String, 
    Address: String 

}); 

//create model for schema 
var EmpDoc = mongoose.model('Employees', EmployeeSchema); 

function queryAllEntries() { 
    EmpDoc .aggregate(
     {$group: {_id: '$EmployeeID', oppArray: {$push: { 
      Designation: '$Designation', 
      Address: '$Address' 
      }} 
     }}, function(err, qDocList) { 
     //console.log(util.inspect(qDocList, false, 10)); 
     process.exit(0); 
    }); 
} 


function createDocRecurse (err) { 
    if (err) { 
     console.log(err); 
     process.exit(1); 
    } 
    if (lineList.length) { 
     var line = lineList.shift(); 
     var doc = new EmpDoc(); 
     line.split(',').forEach(function (entry, i) { 
      doc[schemaKeyList[i]] = entry; 
     }); 
     doc.save(createDocRecurse); 
    } else { 
     queryAllEntries(); 
    } 
} 

createDocRecurse(null); 
관련 문제