2013-03-12 38 views
2

我在MongoDB GridFS中有一些數據。我正在使用Spring Data GridFsOperations類來完成我的GridFS讀取/寫入操作。使用Spring Data MongoDB替換現有GridFS文件和新內容

我有一個要求來替換現有的GridFS文件的內容,即_idfilename應保持不變,但文件內容應該更新。

彈簧數據[GridFsOperations]API)主要允許find,它返回一個蒙戈GridFSDBFile,和storeGridFSDBFileAPI)不允許更新內容。如果文件首先被刪除,然後使用與前一文件相同的_id進行存儲,理論上可以使用store方法。但store不允許指定_id字段。

到目前爲止,我發現的唯一解決方案是直接使用Mongo API刪除現有文件,並使用相同的_id存儲新文件。這個效果的答案是沒有用的:這個問題是特定於Spring Data MongoDB的。

回答

0

沒有暴露API的原因是MongoDB GridFS上沒有支持此API的原因。你本質上是圍繞着這個問題來實現一個模式,如here。但是,由於這歸結爲非原子操作,我們決定不首先將其公開爲操作。

如果你有這種模式的可靠實施(加上錯誤情況的適當處理),請隨時在我們的JIRA中打開票以討論選項。

+0

是的,這基本上是我使用Mongo API所做的。 我想說的是,Spring Data的第一步可以讓'store'方法獲得預先存在的_id值,這樣用戶至少可以通過Spring Data在自己的代碼中實現這個兩步模式API。就目前而言,我不得不使用反射從GridFsOperations中獲取私有'GridFS'對象,然後直接使用它來創建新文件。 – Raman 2013-03-13 18:14:55

+0

你介意爲此創建一個JIRA嗎? – 2013-03-14 18:35:31

+0

https://jira.springsource.org/browse/DATAMONGO-625 – Raman 2013-03-15 14:16:24

相關問題