0
我正在將文件存儲在MongoDB中。爲了在日後檢索它們,我正在記錄與每個文件關聯的ObjectId
。MongoDB返回與存儲內容不同的ObjectId值(使用GridFS)
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.當:
4e9845d6036400df09609b23存儲返回的值是4e9845d6036400df09609b22 4e98466f036400df09609b27存儲返回的值是4e98466f036400df09609b26 4e9848530364904b6b575003存儲返回的值是4e9848530364904b6b575002
的差別只在最後一個數字不同的是一致的相同:返回值比存儲值小1。
當我使用存儲值運行測試時,文件按預期返回。所以這似乎是我必須解決的問題。
有誰知道爲什麼會發生這種情況?
我暫時用一個黑客解決了這個問題。我爲返回的值添加了1,或者在最後一位數字是字母字符的情況下,我將字符移動了一位。但是我仍然渴望知道是否有人曾經見過這件事,或者可能知道它爲什麼會發生。 – Ankur