数据库

 首页 > 数据库 > MongoDB > Java程序中批量操作MongoDB的gridfs演示

Java程序中批量操作MongoDB的gridfs演示

分享到:
【字体:
导读:
         摘要:2012111302:36PM636次查看GridFS是一种在MongoDB中存储大二进制文件的机制。它默认使用fs.chunks和fs.files来存储文件。其中fs.files集合存放文件的信息,fs.chunks存放文件数据。下面的方法返回一个GridFSDBFile的集合publicListDBObjectli...

Java程序中批量操作MongoDB的gridfs演示
2012 11 13 02:36 PM 636次查看 GridFS是一种在MongoDB中存储大二进制文件的机制。它默认使用fs.chunks和fs.files来存储文件。其中fs.files集合存放文件的信息,fs.chunks存放文件数据。

下面的方法返回一个GridFSDBFile的集合

public List listGirdFS() {
        DB db = getMongoTemplate().getDb();
        GridFS gridFS = new GridFS(db);
        try{
                DBCursor cursor = gridFS.getFileList();
                return cursor.toArray();
        }
        catch (Exception e){
                logger.error(e.getMessage());
        }
        return null;
}
如果你直接进行一下操作的话,程序将会抛出一个"no gridfs!"的运行时异常。 public void migration() {
        for (DBObject object : listGirdFS()) {
                GridFSDBFile file = (GridFSDBFile)object;
                file.writeTo(new File(file.getFileName()));
        }
}
这是因为文件的信息存放在fs.files上,文件数据存放在fs.chunks上。批量查找数据的时候只是返回文件的信息,这样能够减轻程序的压力。

因此正确的做法是

public void migration() {
        for (DBObject object : listGirdFS()) {
                String fileName = ((GridFSDBFile)object).getFilename();
                GridFSDBFile file = findGridFSByName(fileName);
                file.writeTo(new File(file.getFileName()));
        }
}
其中findGridFSByName(fileName)方法定义如下: public GridFSDBFile findGridFSByName(String fileName) {
        DB db = getMongoTemplate().getDb();
        GridFS gridFS = new GridFS(db);
        try{
                GridFSDBFile gridFSDBFile = gridFS.findOne(fileName);
                return gridFSDBFile;
        }
        catch (Exception e){
                logger.error(e.getMessage());
        }
        return null;
}
Java程序中批量操作MongoDB的gridfs演示
分享到:
MongoDB数据库中的查询操作
MongoDB数据库中的查询操作 mongodb采用find来进行查询操作,根据传进去的参数不同,可以进行不同类型的操作。 1. 最简单的查询 首先,最简单的查询,当然是不带任何条件的查询,这在我们前面的例子中也看过了,如db.blog.find(),该查询将返回blog集合中所有的文档。 2. 限定条件 在关系型数据库(RDB)中,...
Java程序操作MongoDB插入、读取、修改以...
Java程序操作MongoDB插入、读取、修改以及删除数据 package mongodb; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Set; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb....
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……