我想更新GrifFs文件集合中的单个元数据字段。
我阅读了Spring Data MongoDB的文档,但没有找到相应的API。
目前我唯一找到的解决方案是直接使用Mongo API删除现有文件,并存储一个具有相同_id
的新文件。但这不是有效的解决方案。这个问题特定于Spring Data MongoDB。是否有其他替代方法?
我想更新GrifFs文件集合中的单个元数据字段。
我阅读了Spring Data MongoDB的文档,但没有找到相应的API。
目前我唯一找到的解决方案是直接使用Mongo API删除现有文件,并存储一个具有相同_id
的新文件。但这不是有效的解决方案。这个问题特定于Spring Data MongoDB。是否有其他替代方法?
Map<String,Object> fields=...;
替换元数据:
List<GridFSDBFile> files = gfs.find(query);
for (GridFSDBFile file : files) {
file.setMetaData(new BasicDBObject(fields));
file.save();
}
添加元数据:
List<GridFSDBFile> files = gfs.find(query);
for (GridFSDBFile file : files) {
if (file.getMetaData() == null)
file.setMetaData(new BasicDBObject(fields));
else
file.getMetaData().putAll(fields);
file.save();
}
使用mongoOperations。
元数据存储在集合fs.files中;如果您只更新元数据,可以直接使用集合访问并更新它:
DBObject yourObjectWithMetadata = mongoOperations.getCollection("fs.files").findOne(<Object Id>);
mongoOperations.getCollection("fs.files").save(<your db object with updated metadata>);
mongoOperations.getCollection("fs.files").update(<query>, <update>)
。 - royB