MongoDB Java環境下的開發

        同Mysql、Oracle同樣,首先要下載驅動包,下載地址
html

        打開myeclipse,建立一個java project。
java

        在項目下創建一個lib文件夾,將下載的驅動包放到lib下並build到path下:git

而後在src下建一個db.properties文件
github

host=127.0.0.1
port=27017
dbname=test

新建一個util包,包下新建一個類DBUtilsql

package util;

import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Properties;

import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.util.JSON;

public class DBUtil {
	private static Properties p=new Properties();
	private static String host;
	private static int port;
	private static String dbname;
	static{
		try {
			p.load(DBUtil.class.getClassLoader().getResourceAsStream("db.properties"));
			host=(String) p.get("host");
			port=Integer.valueOf((String) p.get("port"));
			dbname=(String) p.get("dbname");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static DBCollection getDBCollection(String tablename){
		try {
			 return new MongoClient(host,port).getDB(dbname).getCollection(tablename);
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		return null;
	}
	public static DBObject getDBCursorFromJson(String jsondata){
		return (DBObject) JSON.parse(jsondata);
	}
	public static String getStringDataFromDBObject(DBObject entry){
		return JSON.serialize(entry);
	}
}

    下面測試簡單的CRUDmongodb

package testmongodb;

import org.bson.types.ObjectId;
import util.DBUtil;

import com.mongodb.BasicDBObject;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;

public class Test {
	@org.junit.Test
	public void testAdd(){
		DBCollection collection=DBUtil.getDBCollection("testtable");
		DBObject user=new BasicDBObject();
		user.put("name", "zhangsan");
		user.put("age", 11);
		collection.insert(user).getN();
	}
	@org.junit.Test
	public void testfind(){
		//mongoDB不支持聯合查詢、子查詢,這須要咱們本身在程序中完成。將查詢的結果集在Java查詢中進行須要的過濾便可。
		DBCollection collection=DBUtil.getDBCollection("testtable");
		DBObject user=new BasicDBObject();
		user.put("name", "zhangsan");
		user.put("age", "11");
		//所有查詢
		//DBCursor cursor=collection.find();
		//條件查詢
		DBCursor cursor=collection.find(new BasicDBObject("age", new BasicDBObject("$lte", 105)));
		while (cursor.hasNext()) {
			System.out.println(cursor.next());
		}
	}
	@org.junit.Test
	public void testDelete(){
		DBCollection collection=DBUtil.getDBCollection("testtable");
		//根據id刪除
		collection.remove(new BasicDBObject("_id", new ObjectId("5590e57b7d51ad2ef1b69a93")));
		//條件刪除
		collection.remove(new BasicDBObject("age", new BasicDBObject("$gte", 105)));
	}
	@org.junit.Test
	public void testUpdate(){
		DBCollection collection=DBUtil.getDBCollection("testtable");
		//根據id修改
		collection.update(new BasicDBObject("_id", new ObjectId("5590e57b7d51ad2ef1b69a93")), new BasicDBObject("age", 99));
		//條件修改
		collection.update(new BasicDBObject("age", new BasicDBObject("$gte", 105)), new BasicDBObject("age", 11));
	}
}

        關於聚合能夠看這篇文章,文章地址數據庫

        關於索引能夠看這篇文章,文章地址json

        最後多嘴一句,MongoDB使用面向對方的方式處理數據庫,讓開發者不用再去關心sql問題,但也一樣限制了他所能處理的業務,對於複雜的數據分析或者關係比較複雜的erp等,不太適合。不過有一種折中的辦法就是對於要作複雜分析的表依然使用傳統的數據庫,而對於簡單的則用MongoDB。
eclipse

相關文章
相關標籤/搜索