我正在使用GridFS将文件添加到我的MongoDB数据库中。这些文件具有附加的元数据。我现在想修改其中一个文件的元数据。我正在使用版本3.9 Java驱动程序。
我正在使用GridFSBucket来访问GridFS集合。但是,GridFSBucket上的find()方法返回com.mongodb.client.gridfs.model.GridFSFile的实例-没有允许我更改元数据的设置方法。
我看到com.mongodb.gridfs.GridFSFile确实具有修改元数据的方法-但是要获取这些对象的实例,我将需要使用GridFS,这似乎不再被推荐。当然,GridFS 3.9版的文档依赖于使用GridFSBucket。
所以我的问题是:
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()
答案 0 :(得分:0)
您可以通过编写新版本并修改新版本中的元数据来对其进行修改。这能满足您的需求吗?
答案 1 :(得分:0)
我也遇到了这个问题。当前最新的驱动程序是3.11,发现有2种可能的操作要遵循:
您可以使用GridFSUploadOptions并上传您应得的文件。但是,这仅适用于初始情况,可能无法满足您的需求。
您可以使用com.mongodb.gridfs.GridFSFile setMetaData method。我知道这可能并不是您要找的,因为您喜欢使用新的驱动程序类/方法。
据我了解,mongodb drvier的开发人员试图消除用户与元数据的交互,以便在上载期间自动设置这些字段。
我希望这个答案能满足您的需求。