0

MongoDBにファイルを保存しています。後日それらを取得するためにObjectId、各ファイルに関連付けられたものを記録しています。

GridFS fs = new GridFS(Dao.getDB(), "docs");
GridFSInputFile file = fs.createFile(fAsIS);
ObjectId id = (ObjectId)file.get("_id");
file = fs.createFile(fAsIS);  //fAsIS is an InputStream
file.save();

ただし、返されるidの値は、格納されている値とは常に異なります。

例:

4e9845d6036400df09609b23が格納されます返される値は4e9845d6036400df09609b224e98466f036400df09609b27が格納されます返される値は4e98466f036400df09609b264e9848530364904b6b575003が格納されます返される値は4e9848530364904b6b575002

違いは最後の桁にのみあり、違いは一貫して同じです。戻り値は保存された値より1少ない値です。

保存された値を使用してテストを実行すると、ファイルは期待どおりに返されます。ですから、これは私が解決しなければならない問題のようです。

なぜこれが起こっているのか誰かが知っていますか?

4

1 に答える 1

3

おそらくfs.createFile(fAsIs)2回電話したからでしょう

于 2012-01-04T14:21:33.883 に答える