1. 程式人生 > >MongoDB初探系列之四:MongoDB與Java共舞

MongoDB初探系列之四:MongoDB與Java共舞

ever 文件 basic query find man mongodb next() 入學

因為版本號不同,可能API也有所不同。本次學習用的是3.0版本號。

1、使用的mongodb的jdbc驅動版本號為:mongo-java-driver-3.0.0.jar

2、本節僅僅是簡介JDBC操作,臨時不考慮效率問題。

3、封裝的工具類代碼例如以下:

public class MongoDBProxy {

	private static MongoDBProxy proxy=null;//單實例
	private static MongoDatabase db=null;//數據庫連接對象
	private static String [] paramArray=new String[5];//數據庫連接參數
	private MongoDBProxy(){
		
	}
	static{
		paramArray[0]="username";
		paramArray[1]="password";
		paramArray[2]="host";
		paramArray[3]="port";
		paramArray[4]="databaseName";
	}
	/**
	 * 得到MongoDBProxy
	 * 採用系統默認配置
	 */
	public static MongoDBProxy getMongoDBProxy(){
		if(proxy==null){
			proxy=new MongoDBProxy();
			String sURI = String.format("mongodb://%s:%s@%s:%d/%s",paramArray[0],paramArray[1],paramArray[2],Integer.parseInt(paramArray[3]),paramArray[4]); 
			MongoClientURI uri = new MongoClientURI(sURI); 
			MongoClient mongoClient = new MongoClient(uri); 
			db= mongoClient.getDatabase(paramArray[4]);
		}
		return proxy;
	}
	/**
	 * 批量查詢數據
	 * @param table  集合名稱 
	 * @param page   分頁參數
	 * @param filter 過濾條件
	 * @param sort   排序條件
	 */
	public  Page findDocList(String table,Page page,Bson filter,Bson sort){
		MongoCollection<Document>  coll=db.getCollection(table);
		long count=coll.count(filter);//依據過濾條件獲取數據總量
		Page p=PageUtil.createPage(page,Integer.parseInt(String.valueOf(count)));
		p.setFromUrl((page.getFromUrl()==null)?"":page.getFromUrl());
		p.setParamString((page.getParamString()==null)?"":page.getParamString());
		FindIterable<Document> resultIterable=coll.find();
		//運行條件過濾
		resultIterable=resultIterable.sort(sort).filter(filter).skip(p.getBeginIndex()).batchSize(p.getEveryPage());
		MongoCursor<Document> cousor=resultIterable.iterator();
		List<Document> dataList=new ArrayList<Document>();
		while(cousor.hasNext()){
			dataList.add(cousor.next());
		}
		p.setDataList(dataList);
		return PageUtil.buildPageString(p);
	}
	/**
	 * 獲取單個文檔
	 * @param table  集合名稱 
	 * @param filter 過濾條件
	 * @param sort   排序條件
	 */
	public  Document findOneDoc(String table,Bson filter,Bson sort){
		MongoCollection<Document>  coll=db.getCollection(table);
		FindIterable<Document> resultIterable=coll.find();
		if(sort!=null){
			resultIterable.sort(sort);
		}
		if(filter!=null){
			resultIterable.filter(filter);
		}
		return resultIterable.first();
	}
	/**
	 * 加入文檔
	 * @param table 集合名稱
	 * @prama doc   文檔內容
	 */
	public  void addDocument(String table,Document doc){
		MongoCollection<Document> coll=getCollection(table);
		coll.insertOne(doc);
	}
	/**
	 * 批量加入文檔
	 * @param table     集合名稱
	 * @prama docList   文檔集合
	 */
	public  void addDocumentList(String table,List<Document> docList){
		MongoCollection<Document> coll=getCollection(table);
		coll.insertMany(docList);
	}
	/**
	 * 更新文檔
	 * @param table  集合名稱
	 * @param query  查詢條件
	 * @param up     更新數據
	 */
	public  UpdateResult updateDocument(String table,Bson query,Bson up){
		MongoCollection<Document> coll=getCollection(table);
		return coll.updateOne(query,up);
	}
	/**
	 * 替換文檔
	 * @param table  集合名稱
	 * @param query  查詢條件
	 * @param up     替換的文件對象
	 */
	public  UpdateResult replaceDocument(String table,Bson query,Document up){
		MongoCollection<Document> coll=getCollection(table);
		return coll.replaceOne(query, up);
	}
	/**
	 * 刪除文檔
	 * @param table  集合名稱
	 * @param delete 刪除條件
	 */
	public  DeleteResult deleteDocument(String table,Bson delete){
		MongoCollection<Document> coll=getCollection(table);
		return coll.deleteOne(delete);
	}
	/**
	 * 獲取集合對象
	 * @param table  集合名稱
	 */
	private  MongoCollection<Document>  getCollection(String table){
		return db.getCollection(table);
	}
}

4、調用demo

MongoDBProxy proxy=MongoDBProxy.getMongoDBProxy();
System.out.println(proxy.findOneDoc("users",null,null).get("_id"));
Document doc=new Document();
doc.put("user","李四");
proxy.addDocument("users", doc);
Bson bson=new BasicDBObject("user","張三");
proxy.deleteDocument("users", bson);

興許再深入學習,先用demo上上手哇。哈哈。

MongoDB初探系列之四:MongoDB與Java共舞