MongoDb初学者一个比较好的网站:http://www.runoob.com/mongodb/mongodb-create-database.html
一、java链接Mongo读取文件的例子:
public class MongoGridFSTest {
private static MongoClient mongoClient = null;
private static DB db = null;
private static GridFS gridFS = null;
private static String dbName = "360loan";
public static void main(String[] args) throws UnknownHostException, Exception {
mongoClient = new MongoClient("jira.360haojie.loan", 7952);
db = mongoClient.getDB(dbName);
gridFS = new GridFS(db);
String file = "D:\\20170907185929.zip";
if (!new File(file).exists()) {
System.out.println("file is not exists.");
}
String fileName = "20170907185929.zip";
//把文件保存到gridfs中,并以文件的md5值为id
save(new FileInputStream(file), fileName, fileName);
//据文件名从gridfs中读取到文件
GridFSDBFile gridFSDBFile = getByFileName(fileName);
if (gridFSDBFile != null) {
System.out.println("filename:" + gridFSDBFile.getFilename());
System.out.println("md5:" + gridFSDBFile.getMD5());
System.out.println("length:" + gridFSDBFile.getLength());
System.out.println("uploadDate:" + gridFSDBFile.getUploadDate());
System.out.println("--------------------------------------");
gridFSDBFile.writeTo(new FileOutputStream("D:\\20170907185929-temp.zip"));
} else {
System.out.println("can not get file by name:" + fileName);
}
}
/**
* 用给出的id,保存文件,透明处理已存在的情况
* id 可以是string,long,int,org.bson.types.ObjectId 类型
*
* @param in
* @param id
*/
public static void save(InputStream in, Object id, String fileName) {
DBObject query = new BasicDBObject("_id", id);
GridFSDBFile gridFSDBFile = gridFS.findOne(query);
if (gridFSDBFile != null) {
gridFS.remove(gridFSDBFile);
}
GridFSInputFile gridFSInputFile = gridFS.createFile(in);
gridFSInputFile.setId(id);
gridFSInputFile.setFilename(fileName);
//gridFSInputFile.setChunkSize();
//gridFSInputFile.setContentType();
//gridFSInputFile.setMetaData();
gridFSInputFile.save();
}
/**
* 据id返回文件
*
* @param id
* @return
*/
public static GridFSDBFile getById(Object id) {
DBObject query = new BasicDBObject("_id", id);
GridFSDBFile gridFSDBFile = gridFS.findOne(query);
return gridFSDBFile;
}
/**
* 据文件名返回文件,只返回第一个
*
* @param fileName
* @return
*/
public static GridFSDBFile getByFileName(String fileName) {
DBObject query = new BasicDBObject("filename", fileName);
GridFSDBFile gridFSDBFile = gridFS.findOne(query);
return gridFSDBFile;
}
}