#java #mongodb #gridfs
#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 всегда отличается от того, что сохраняется.
Например. когда:
сохраняется 4e9845d6036400df09609b23 возвращаемое значение равно 4e9845d6036400df09609b22 сохраняется 4e98466f036400df09609b27 возвращаемое значение равно 4e98466f036400df09609b26 сохраняется 4e9848530364904b6b575003 возвращаемое значение равно 4e9848530364904b6b575002
Разница заключается только в последней цифре, и разница неизменно одна и та же: возвращаемое значение на 1 меньше сохраненного значения.
Когда я запускаю свой тест с сохраненным значением, файл возвращается, как и ожидалось. Похоже, это проблема, которую я должен решить.
Кто-нибудь знает, почему это может происходить?
Комментарии:
1. На данный момент я решил эту проблему с помощью взлома. Я добавил 1 к возвращаемому значению, или в тех случаях, когда последняя цифра представляет собой алфавитные символы, я сдвинул символ на единицу. Но я все еще очень хочу знать, видел ли кто-нибудь это раньше или, возможно, знает, почему это происходит.
Ответ №1:
Вероятно, потому, что вы вызываете fs.createFile(fAsIs)
дважды