【发布时间】:2011-10-14 14:50:06
【问题描述】:
我在 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 被存储返回值为 4e9845d6036400df09609b22 4e98466f036400df09609b27 被存储返回值为 4e98466f036400df09609b26 4e9848530364904b6b575003 被存储,返回值为 4e9848530364904b6b575002
差异仅在最后一位,差异始终相同:返回值比存储值小1。
当我使用存储的值运行测试时,文件按预期返回。所以这似乎是我必须解决的问题。
有人知道为什么会这样吗?
【问题讨论】:
-
目前我已经通过 hack 解决了这个问题。我已将 1 添加到返回值,或者在最后一位数字是字母字符的情况下,我已将字符移动了一个。但我仍然很想知道是否有人以前见过这种情况,或者可能知道为什么会这样。