如何在MongoDB数据库中保存文件



我正在做一个小项目,在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);

相关内容

最新更新