我正在使用gridFS,它出现在我写入文件之后,如果我立即进行读取以尝试找到它,mongoDB 会引发运行时异常,但它似乎是断断续续的。
导致它的java代码是:
List<GridFSDBFile> files = PlayJongo.gridfs().find(filename);
GridFS类中驱动中的相关代码如下:
/**
* finds a list of files matching the given query
* @param query
* @param sort
* @return
* @throws MongoException
*/
public List<GridFSDBFile> find( DBObject query , DBObject sort){
List<GridFSDBFile> files = new ArrayList<GridFSDBFile>();
DBCursor c = null;
try {
c = _filesCollection.find( query );
if (sort != null) {
c.sort(sort);
}
while ( c.hasNext() ){
files.add( _fix( c.next() ) );
}
} finally {
if (c != null){
c.close();
}
}
return files;
}
protected GridFSDBFile _fix( Object o ){
if ( o == null )
return null;
if ( ! ( o instanceof GridFSDBFile ) )
throw new RuntimeException( "somehow didn't get a GridFSDBFile" );
GridFSDBFile f = (GridFSDBFile)o;
f._fs = this;
return f;
}
我正在使用游戏!2.1 使用 Jongo 包装器,但它们不应该影响它,因为我正在使用 mongodb 的 java 驱动程序直接访问 gridFS。
奇怪的是,如果我调试的数据比我实际想要的数据在对象中,但它不是驱动程序期望的对象:
有没有人遇到过这个?