node-mongodb-nativeを使用する次のコード(簡潔にするためにエラーチェックを削除)があります。
var mongo = require('mongodb').MongoClient;
var grid = require('mongodb').GridStore;
var url = 'mongodb://localhost:27017/mydatabase';
mongo.connect(url, function(err, db) {
var gs = new grid(db, 'myfile.txt', 'w', {
"metadata": {
// metadata here
}
});
gs.open(function(err, store) {
gs.writeFile('~/myfile.txt', function(err, doc) {
fs.unlink(req.files.save.path, function (err) {
// error checking etc
});
}
});
});
それを実行すると、正常に動作し、ファイルがGridFSに保存されます。
ここで、システムでそのファイルを削除し、同じ名前で内容が異なる新しいファイルを作成し、そのコードを再度実行すると、ファイルがアップロードされます。ただし、GridFSにすでに保存されているファイルを上書きしているようです。_id
同じままですがmd5
、新しい値に更新されています。したがって、ファイルが異なっていても、名前が同じであるため、GridFSの現在のファイルが上書きされます。
同じ名前の2つのファイルをアップロードする方法はありますか?が一意の場合_id
、ドライバーがファイル名のみに基づいてファイルを上書きするのはなぜですか?
GitHubでも同様の問題が見つかりましたが、の最新バージョンのドライバーを使用しておりnpm
、上記で説明したことを実行します。