我正在做一个小项目,在MongoDB数据库中存储一个文档文件。我听说文档文件不能直接存储在MongoDB中,而我们可以将其存储在Google云端硬盘或Dropbox等中,我们可以从那里引用它。这是对还是错,如果错了,任何人都可以帮助我完成这个项目吗?我只是参考了解我的项目,这是我的 plunker 链接,请看一下并让我知道最佳方法?
<https://plnkr.co/edit/RwjmCynuvzj8reqv2pw6?p=preview>
您可以在MongoDB中存储大文件。看看 https://www.mongodb.com/blog/post/storing-large-objects-and-files-in-mongodb
MongoDB以称为BSON的二进制格式存储对象。BinData 是一个 二进制字节数组的 BSON 数据类型。但是,MongoDB对象是 通常限制为 4MB。为了解决这个问题,文件是 "分块"成多个对象,每个对象小于 4MB。这有 让我们有效地检索特定 给定文件的范围。
你可以试试下面的代码 -
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);