2011-10-14 63 views
0

我正在將文件存儲在MongoDB中。爲了在日後檢索它們,我正在記錄與每個文件關聯的ObjectIdMongoDB返回與存儲內容不同的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。

當我使用存儲值運行測試時,文件按預期返回。所以這似乎是我必須解決的問題。

有誰知道爲什麼會發生這種情況?

+0

我暫時用一個黑客解決了這個問題。我爲返回的值添加了1,或者在最後一位數字是字母字符的情況下,我將字符移動了一位。但是我仍然渴望知道是否有人曾經見過這件事,或者可能知道它爲什麼會發生。 – Ankur

回答

2

可能因爲您撥打fs.createFile(fAsIs)兩次

相關問題