2016-05-02 15 views
4

JavaScriptを使ってmongodbデータベースにテキストを含む100万のドキュメントを挿入しました。私はどのようにオーディオ/画像に関連する100万のドキュメントをデータベースに挿入するのか知りたいと思います。MongoDBオーディオを挿入する

私はテキストを挿入するために使用されるスクリプトは:

var minDate = new Date(2012, 0, 1, 0, 0, 0, 0); 
var maxDate = new Date(2013, 0, 1, 0, 0, 0, 0); 
var delta = maxDate.getTime() - minDate.getTime(); 

var job_id = arg2; 

var documentNumber = arg1; 
var batchNumber = 5 * 1000; 

var job_name = 'Job#' + job_id 
var start = new Date(); 

var batchDocuments = new Array(); 
var index = 0; 

while(index < documentNumber) { 
    var date = new Date(minDate.getTime() + Math.random() * delta); 
    var value = Math.random(); 
    var document = {  
     created_on : date, 
     value : value 
    }; 
    batchDocuments[index % batchNumber] = document; 
    if((index + 1) % batchNumber == 0) { 
     db.randomData.insert(batchDocuments); 
    } 
    index++; 
    if(index % 100000 == 0) { 
     print(job_name + ' inserted ' + index + ' documents.'); 
    } 
} 
print(job_name + ' inserted ' + documentNumber + ' in ' + (new Date() - start)/1000.0 + 's'); 

は同様のスクリプトは、同様のオーディオ/画像を挿入するために使用することはできますか?

ありがとうございました。

+0

まず、あなたは、多くの文書を挿入する必要があるときに移動するための方法ではありません。 [書き込み操作の概要](https://docs.mongodb.org/manual/core/write-operations-introduction/#write-operations-overview)をお読みください。つまり、MongoDBはファイルを保存するための効率的な方法を提供します。それは[GridFS](https://docs.mongodb.org/manual/core/gridfs/)です。 – styvane

答えて

0

はい、これを達成するには強力なインタープリタが必要です。 BinDataを使ってMongoDBにバイナリデータを挿入することができます.BinDataはbase64文字列を必要とし、cat()はバイナリデータの読み込みに失敗します。

すばやく回避するには、base64文字列を取得してファイルに保存し、スクリプト内でcat()を使用して読み取ることができます。 Node.jsの中例:

var fs = require('fs'); 
var b64Str = fs.readFileSync('file.mp3','base64'); 
fs.writeFileSync('base64ContentFile',b64Str); 

は以下を変更し、スクリプトを実行し、データベースに入れたいすべてのファイルのためにそれを実行します。

var document = { 
    created_on : date, 
    value : new BinData(0,cat('base64ContentFile')) 
}; 

より良い解決策は、別の言語を使用するだろう、 mongodbドライバとすべてのことを行う。 1つのファイルを読み取り、base64の文字列に解析してからdbに挿入します。このすべての

https://docs.mongodb.org/manual/reference/mongodb-extended-json/#binary

関連する問題