2017-02-07 4 views
2

Я создаю небольшой проект, хранящий файл документа в базе данных MongoDB. Я слышал, что файлы документов не могут быть сохранены непосредственно в MongoDB, тогда как мы можем сохранить его в Google Drive или 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 равны , которые обычно ограничены размером 4 МБ. Чтобы справиться с этим, файлы: «chunked» на несколько объектов, размер которых меньше 4 МБ. Это дает дополнительное преимущество, позволяющее эффективно получить определенный диапазон данного файла.

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); 
Смежные вопросы