【发布时间】:2019-05-05 00:01:59
【问题描述】:
我正在使用 GridFS 将文件添加到我的 MongoDB 数据库中。这些文件附有元数据。我现在想修改其中一个文件的元数据。我正在使用 3.9 版 java 驱动程序。
我正在使用 GridFSBucket 来访问 GridFS 集合。但是,GridFSBucket 上的 find() 方法返回 com.mongodb.client.gridfs.model.GridFSFile 的实例 - 这些实例没有设置方法允许我更改元数据。
我看到 com.mongodb.gridfs.GridFSFile 确实有修改元数据的方法 - 但要获取这些对象的实例,我需要使用似乎不再推荐的 GridFS。当然 GridFS 3.9 版本的文档依赖于使用 GridFSBucket。
所以我的问题是:
- 我是否正确,我应该使用 GridFSBucket(而不是 GridFS)
- 然后我如何访问和修改元数据,而不是求助于入侵 fs.files 集合(感觉像是作弊)。
FWIW,这是我的代码:
String id = "5c05278530a59030cc89fc2f";) // hex id
com.mongodb.client.gridfs.model.GridFSFile file = gridFSBucket.find( eq( "_id", new ObjectId( id ) ) ).first();
Document d = file.getMetadata(); // No corresponding setMetadata()
【问题讨论】: