同Mysql、Oracle一样,首先要下载驱动包,下载地址。
打开myeclipse,创建一个java project。
在项目下建立一个lib文件夹,将下载的驱动包放到lib下并build到path下:
然后在src下建一个db.properties文件
host=127.0.0.1
port=27017
dbname=test
新建一个util包,包下新建一个类DBUtil
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);
}
}
下面测试简单的CRUD
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));
}
}
关于聚合可以看这篇文章,文章地址
关于索引可以看这篇文章,文章地址
最后多嘴一句,MongoDB使用面向对方的方式处理数据库,让开发者不用再去关心sql问题,但也同样限制了他所能处理的业务,对于复杂的数据分析或者关系比较复杂的erp等,不太适合。不过有一种折中的办法就是对于要做复杂分析的表依然使用传统的数据库,而对于简单的则用MongoDB。