MongoDB返回与存储的值不同的ObjectId值(使用GridFS)

时间:2011-10-14 14:50:07

标签: java mongodb gridfs

我在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值始终与存储的值不同。

E.g。当:

存储返回的值为4e9845d6036400df09609b22   4e98466f036400df09609b27存储返回的值是4e98466f036400df09609b26   4e9848530364904b6b575003存储的返回值是4e9848530364904b6b575002

区别仅在于最后一位数,差异始终相同:返回值比存储值小1。

当我使用存储的值运行测试时,将按预期返回文件。所以这似乎是我必须解决的问题。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:3)

可能是因为您拨打了fs.createFile(fAsIs)两次