java - MongoDB GridFS 错误

标签 java mongodb playframework-2.1 gridfs

我正在使用 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。

奇怪的是,如果我调试比我实际想要的数据在对象中,但它不是驱动程序期望的对象:

enter image description here

有人遇到过这种情况吗?

最佳答案

找到答案了。如果您使用 jongo api 访问 fs.files 集合,即使您直接使用 mongoDB 驱动程序,它也会中断对 gridFS 文件系统的进一步访问。

补丁已发布,但尚未集成到版本中

补丁:https://github.com/bguerout/jongo/commit/0d27ba3ebfd065e7bf4ad323ee21059b762b512e

关于java - MongoDB GridFS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17552264/

相关文章:

mongodb - 您将如何在MongoDb中存储类别和子类别?

java - Play Framework 2.1 IDE 设置

postgresql - 如何使用 Play 框架中的演变在 PostgreSQL 中创建函数?

java - 管道 PrintWriter->CipherOutputStream->FileOutputStream

java - TokensRegex 中正则表达式的开始/结束

php - MongoDB PHP 未捕获 MongoDB\Driver\Exception\ConnectionTimeoutException : No suitable servers found

scala - 使用 JSON 隐式读取器

java - 线程中 falseException 的代码错误

java - Spring /Java 邮件 : The FROM address is being ignored

sql - MongoDB 比 SQL Server 慢