【问题标题】:MongoDB returns ObjectId values that are different to what is stored (using GridFS)MongoDB 返回的 ObjectId 值与存储的值不同(使用 GridFS)
【发布时间】: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 添加到返回值,或者在最后一位数字是字母字符的情况下,我已将字符移动了一个。但我仍然很想知道是否有人以前见过这种情况,或者可能知道为什么会这样。

标签: java mongodb gridfs


【解决方案1】:

可能是因为你给fs.createFile(fAsIs)打了两次电话

【讨论】:

    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 2015-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    相关资源
    最近更新 更多