同事 我正在使用Mongo of v2.2和java Mongo driver 2.9.0,
某些业务逻辑创建大约25个线程,每个线程在GridFS上创建150个文件。每1000个大约20个文件未返回正确getId()
,因此结果为空。我认为(如果我错了,请纠正我)从吞吐量的角度来看,这是正确的行为。但我真的需要这个身份。对于常规DBCollection,我会设置WriteConcern.FSYNC_SAFE
,但我无法看到GridFS是否存在方法setWriteConcern
。你有一些想法如何强制文件刷新?
答案 0 :(得分:0)
查看GridFS.java中的驱动程序代码:
_filesCollection = _db.getCollection( _bucketName + ".files" );
我可以在创建GridFS后解析具有相同名称的集合,因此我的设置写入关注的代码如下所示:
_fs = new GridFS(_db, "MyBucketName");
DBCollection col = _db.getCollection( "MyBucketName" + ".files" );
col.setWriteConcern(WriteConcern.SAFE);
开始测试后,我可以看到所有文件都成功返回正确的id。