2013-03-12 99 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