【原】MongoDB Java版驱动调用GridFS.getFileList()报错:no gridfs!解决方法
2014-01-12 22:25
441 查看
使用驱动版本:mongo-java-driver-2.9.3.jar
问题原因:GridFS.getFileList()方法返回的GridFSDBFile对象的_fs字段未初始化
解决方法:利用Java的反射机制手工赋值
代码示例:
另:
GridFS的findOne(...),find(...)方法内都调用了GridFS._fix( Object o )方法对此问题进行了修正,所以一般这个问题也不容易被发现。没想到刚刚开始学习MongoDB就中枪。
问题原因:GridFS.getFileList()方法返回的GridFSDBFile对象的_fs字段未初始化
解决方法:利用Java的反射机制手工赋值
代码示例:
Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("demo"); GridFS fs = new GridFS(db, theme); DBCursor fileList = fs.getFileList(); Field _fs = GridFSFile.class.getDeclaredField("_fs"); // _fs字段所在的类为GridFSFile _fs.setAccessible(true); while (fileList.hasNext()) { GridFSDBFile next = (GridFSDBFile) fileList.next(); // XXX bug 修复_fs字段为空的问题 _fs.set(next, fs); // 保存文件操作 next.writeTo(next.getId().toString()); // 其他操作 ... } fileList.close(); mongo.close();
另:
GridFS的findOne(...),find(...)方法内都调用了GridFS._fix( Object o )方法对此问题进行了修正,所以一般这个问题也不容易被发现。没想到刚刚开始学习MongoDB就中枪。
相关文章推荐
- MongoDB初探-介绍与环境搭建
- node.js对mongodb的增删查改
- MongoDB基本使用
- 安装MongoDB配置及用户授权
- node.js使用mongodb
- Linux下Mongodb安装,命令行操作和sql语句
- mongodb+java基本操作
- MongoDB:mongodb的备份和恢复
- MongoDB:mongodb的备份和恢复
- mongodb安装笔记【服务没有及时响应或控制请求】
- linux安装mongodb
- Windows下使用mongodb入门之-----安装
- [译] 第二十二天: 用Spring, MongoDB和AngularJS开发单页应用
- 安装使用MongoDB
- mongodb主从复制
- 配置本地环境之Mongodb在Windows XP下安装及配置
- mongodb 高级操作:聚合,游标
- MongoDB应用实战开发教程下载
- MongoDB应用实战开发教程下载
- MongoDB部分使用心得