2017-02-07 11 views
2

私はMongoDBデータベースにドキュメントファイルを格納する小さなプロジェクトを作っています。ドキュメントファイルをMongoDBに直接保存することはできないと聞きましたが、私たちはGoogleドライブやDropboxなどに保存できますが、そこから参照することができます。それが間違っていれば誰でもこのプロジェクトで私を助けることができるのは正しいか間違っていますか?私はちょうど私のプロジェクトを理解するための参照を作成した私の善良なリンクは見て、私に最善のアプローチを教えてくださいですか?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); 
関連する問題