Java 操作mongodb

package cn.test.db;

import java.io.File;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.mongodb.BasicDBObject;
import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
import com.mongodb.util.JSON; /**
* 需引入jar包 :地址https://github.com/mongodb/mongo-java-driver/downloads
* 根据服务器所安装版本下载对应即可>>>
*
*查看版本方式:[root@vmu010226-node1 ~]# mongo version
*/ public class App { /**
* 连接库 test
*
* @return
* @throws UnknownHostException
* @throws MongoException
*/
public static DB getDb() throws UnknownHostException, MongoException {
// 实例化Mongo对象,连接27017端口
Mongo mongo = new Mongo("10.1.207.110", 27017);
// 连接名为test的数据库,假如数据库不存在的话,mongodb会自动建立
DB db = mongo.getDB("test");
return db;
} /**
* 获取所有的集合名
*
* @throws MongoException
* @throws UnknownHostException
*/
public void getCollectionName() throws MongoException, UnknownHostException {
Set<String> collections = getDb().getCollectionNames();
for (String collectionName : collections) {
System.out.println("collectionName=" + collectionName);
}
} /**
* 与集合名为game的取得连接
*
* @return
* @throws UnknownHostException
* @throws MongoException
*/
public static DBCollection getCollection() throws UnknownHostException,
MongoException {
DBCollection collection = getDb().getCollection("game");
return collection;
} /**
* insert 第一种方法,是使用BasicDBObjec
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void insertByBasicDBObject() throws MongoException,
UnknownHostException {
BasicDBObject document = new BasicDBObject();
document.put("id", 1);
document.put("name", "测试数据no1");
document.put("content", "评价no1");
document.put("score", 5000);
BasicDBObject documentDetail = new BasicDBObject();
documentDetail.put("records", "99");
documentDetail.put("index", "vps_index1");
documentDetail.put("active", "true");
document.put("detail", documentDetail);
getCollection().insert(document);
/***
* 输出结果 :{ "_id" : ObjectId("547536e291812694b70f5059"), "id" : 1,
* "name" : "测试数据no1", "content" : "评价no1", "score" : 5000, "detail" : {
* "records" : "99", "index" : "vps_index1", "active" : "true" } }
*/
} /**
* insert 第二种方法,是使用BasicDBObjectBuilder
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void insertByBasicDBObjectBuilder() throws MongoException,
UnknownHostException {
BasicDBObjectBuilder documentBuilder = BasicDBObjectBuilder.start()
.add("id", 2).add("name", "测试数据no2").add("content", "评价no2")
.add("score", 5000);
BasicDBObjectBuilder documentBuilderDetail = BasicDBObjectBuilder
.start().add("records", "100").add("index", "vps_index2").add(
"active", "true");
documentBuilder.add("detail", documentBuilderDetail.get());
getCollection().insert(documentBuilder.get());
/***
* 输出结果 :{ "_id" : ObjectId("547539009181903d3a37ddeb"), "id" : 2,
* "name" : "测试数据no2", "content" : "评价no2", "score" : 5000, "detail" : {
* "records" : "100", "index" : "vps_index2", "active" : "true" } }
*/
} /**
* insert 第三种方法,是使用Map
*
* @throws MongoException
* @throws UnknownHostException
*/
@SuppressWarnings("unchecked")
public static void insertByMap() throws MongoException,
UnknownHostException {
Map documentMap = new HashMap();
documentMap.put("id", 3);
documentMap.put("name", "测试数据no3");
documentMap.put("content", "评价no3");
documentMap.put("score", 5000);
Map documentMapDetail = new HashMap();
documentMapDetail.put("records", "99");
documentMapDetail.put("index", "vps_index3");
documentMapDetail.put("active", "true");
documentMap.put("detail", documentMapDetail);
getCollection().insert(new BasicDBObject(documentMap));
/**
* 输出结果:{ "_id" : ObjectId("547539ff9181629953cc678c"), "content" :
* "评价no3", "id" : 3, "detail" : { "index" : "vps_index3", "active" :
* "true", "records" : "99" }, "name" : "测试数据no3", "score" : 5000 }
*/
} /**
* insert 第四种方法,直接使用json格式
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void insertByJson() throws MongoException,
UnknownHostException {
String json = "{'database' : 'mkyongDB','table' : 'hosting',"
+ "'detail' : {'records' : 99, 'index' : 'vps_index1', 'active' : 'true'}}}";
DBObject dbObject = (DBObject) JSON.parse(json);
getCollection().insert(dbObject);
/**
* 输出结果:{ "_id" : ObjectId("54753abd91810ba1daa7ff0f"), "database" :
* "mkyongDB", "table" : "hosting", "detail" : { "records" : 99, "index"
* : "vps_index1", "active" : "true" } }
*/
} /****
*
* game集合里面现在的数据为 > db.game.find() { "_id" :
* ObjectId("547443c4c9158f23e626927f"), "name" : "my hero", "content" :
* "are you sure?", "score" : 20000 } { "_id" :
* ObjectId("54752f5f9181f945548b2375"), "id" : 1001, "name" : "啦啦啦啦啦啦啦",
* "content" : "hello world mongoDB in Java", "score" : 1 } { "_id" :
* ObjectId("547530ac9181d6f709a151f0"), "id" : 1001, "name" : "啦啦啦啦啦啦啦",
* "content" : "hello world mongoDB in Java", "score" : 1 } { "_id" :
* ObjectId("547536e291812694b70f5059"), "id" : 1, "name" : "测试数据no1",
* "content" : "评价no1", "score" : 5000, "detail" : { "records" : "99",
* "index" : "vps_index1", "active" : "true" } } { "_id" :
* ObjectId("547539009181903d3a37ddeb"), "id" : 2, "name" : "测试数据no2",
* "content" : "评价no2", "score" : 5000, "detail" : { "records" : "100",
* "index" : "vps_index2", "active" : "true" } } { "_id" :
* ObjectId("547539ff9181629953cc678c"), "content" : "评价no3", "id" : 3,
* "detail" : { "index" : "vps_index3", "active" : "true", "records" : "99"
* }, "name" : "测试数据no3", "score" : 5000 } { "_id" :
* ObjectId("54753abd91810ba1daa7ff0f"), "database" : "mkyongDB", "table" :
* "hosting", "detail" : { "records" : 99, "index" : "vps_index1", "active"
* : "true" } }
*
*/
// 更新 ............. /**
* update
*
* @param args
* @throws UnknownHostException
* @throws MongoException
*  使用BasicDBObject对象,并为其赋值了新的值后,然后使用collection的update方法,即可更新该对象
*/
public static void update_1() throws MongoException, UnknownHostException {
// ** 将这条数据更新 { "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :
// "my hero", "content" : "are you sure?", "score" : 20000 }
BasicDBObject newDocument = new BasicDBObject();
newDocument.put("name", "my new hero");
newDocument.put("content", "这是我的新英雄!");
newDocument.put("score", 15400);
getCollection().update(new BasicDBObject().append("name", "my hero"),
newDocument);
/**
* 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :
* "my new hero", "content" : "这是我的新英雄!", "score" : 15400 }
*/
} /***
*
* 还可以使用mongodb中的$inc修饰符号去对某个值进行更新,比如,要将name值为my new
* hero的document的score的值得更新为16000(即15400+4600=16000)
*
* @param args
* @about "$inc"更新修改器 可作为计数器
*/
public static void update_inc() throws MongoException, UnknownHostException {
/**
* 初始{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :
* "my new hero", "content" : "这是我的新英雄!", "score" : 15400 }
*/
BasicDBObject newDocument = new BasicDBObject().append("$inc",
new BasicDBObject().append("score", 4600));
getCollection().update(
new BasicDBObject().append("name", "my new hero"), newDocument);
/**
* 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :
* "my new hero", "content" : "这是我的新英雄!", "score" : 20000 }
*/
} /**
* "$set" 可添加字段内容
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void update_set() throws MongoException, UnknownHostException {
BasicDBObject newDocument = new BasicDBObject().append("$set",
new BasicDBObject().append("useset", "使用$set"));
getCollection().update(
new BasicDBObject().append("name", "my new hero"), newDocument);
/**
* 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :
* "my new hero", "content" : "这是我的新英雄!", "score" : 20000, "useset" :
* "使用$set" }
*/
} /**
* "$unset" 可删除字段内容
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void update_unset() throws MongoException,
UnknownHostException {
BasicDBObject newDocument = new BasicDBObject().append("$unset",
new BasicDBObject().append("useset", "使用$set"));
getCollection().update(
new BasicDBObject().append("name", "my new hero"), newDocument);
/**
* 输出结果 :{ "_id" : ObjectId("547443c4c9158f23e626927f"), "name" :
* "my new hero", "content" : "这是我的新英雄!", "score" : 20000 }
*/
} /**
* 批量更新
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void update_multi() throws MongoException,
UnknownHostException {
// 将id为1001的数据的score更新为999999
/**
* 初始值:{ "_id" : ObjectId("54752f5f9181f945548b2375"), "id" : 1001,
* "name" : "啦啦啦啦啦啦啦", "content" : "hello world mongoDB in Java",
* "score" : 1 } { "_id" : ObjectId("547530ac9181d6f709a151f0"), "id" :
* 1001, "name" : "啦啦啦啦啦啦啦", "content" : "hello world mongoDB in Java",
* "score" : 1 }
*/
BasicDBObject updateQuery = new BasicDBObject().append("$set",
new BasicDBObject().append("score", 999999));
getCollection().update(new BasicDBObject().append("id", 1001),
updateQuery, false, true);
/**
* 输出结果 { "_id" : ObjectId("54752f5f9181f945548b2375"), "id" : 1001,
* "name" : "啦啦啦啦啦啦啦", "content" : "hello world mongoDB in Java",
* "score" : 999999 } { "_id" : ObjectId("547530ac9181d6f709a151f0"),
* "id" : 1001, "name" : "啦啦啦啦啦啦啦", "content" :
* "hello world mongoDB in Java", "score" : 999999 }
*/
} // 查询 /**
* 查询Document
*
* 先用下面的代码往数据库中插入1-10数字:
*/ public static void init() throws MongoException, UnknownHostException { for (int i = 1; i <= 10; i++) {
getCollection().insert(new BasicDBObject().append("number", i));
}
/**
* 结果为: { "_id" : ObjectId("547562c991818dbe4d036486"), "number" : 1 } {
* "_id" : ObjectId("547562c991818dbe4d036487"), "number" : 2 } { "_id"
* : ObjectId("547562c991818dbe4d036488"), "number" : 3 } { "_id" :
* ObjectId("547562c991818dbe4d036489"), "number" : 4 } { "_id" :
* ObjectId("547562c991818dbe4d03648a"), "number" : 5 } { "_id" :
* ObjectId("547562c991818dbe4d03648b"), "number" : 6 } { "_id" :
* ObjectId("547562c991818dbe4d03648c"), "number" : 7 } { "_id" :
* ObjectId("547562c991818dbe4d03648d"), "number" : 8 } { "_id" :
* ObjectId("547562c991818dbe4d03648e"), "number" : 9 } { "_id" :
* ObjectId("547562c991818dbe4d03648f"), "number" : 10 }
*/
} /**
* 查询第一个数据
*
* @throws MongoException
* @throws UnknownHostException
*/
public static void findOne() throws MongoException, UnknownHostException {
DBObject dbObject = getCollection().findOne(); // 等同于mongo 执行
// db.game.findOne()
System.out.println(dbObject);
/**
* 输出结果 :{ "_id" : ObjectId("547562c991818dbe4d036486"), "number" : 1 }
*/ } /**
* 获得document的集合
*
* @param
* @throws MongoException
* @throws UnknownHostException
*/ public static void getDocCollections() throws UnknownHostException,
MongoException {
DBCursor cursor = getCollection().find();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
/***
* 输出结果为:{ "_id" : { "$oid" : "547562c991818dbe4d036486"} , "number" :
* 1} { "_id" : { "$oid" : "547562c991818dbe4d036487"} , "number" : 2} {
* "_id" : { "$oid" : "547562c991818dbe4d036488"} , "number" : 3} {
* "_id" : { "$oid" : "547562c991818dbe4d036489"} , "number" : 4} {
* "_id" : { "$oid" : "547562c991818dbe4d03648a"} , "number" : 5} {
* "_id" : { "$oid" : "547562c991818dbe4d03648b"} , "number" : 6} {
* "_id" : { "$oid" : "547562c991818dbe4d03648c"} , "number" : 7} {
* "_id" : { "$oid" : "547562c991818dbe4d03648d"} , "number" : 8} {
* "_id" : { "$oid" : "547562c991818dbe4d03648e"} , "number" : 9} {
* "_id" : { "$oid" : "547562c991818dbe4d03648f"} , "number" : 10}
*/
} /**
* 获得document集合的总数
*
* @throws UnknownHostException
* @throws MongoException
*/
public static void getDocCount() throws UnknownHostException,
MongoException {
DBCursor cursor = getCollection().find();
System.out.println(cursor.count());
} /**
* 根据条件取document
*
* @throws UnknownHostException
* @throws MongoException
*/
@SuppressWarnings("unchecked")
public static void getDocCollectionsByCondition()
throws UnknownHostException, MongoException {
BasicDBObject query = new BasicDBObject();
query.put("number", 5); // 取number 为5的document
DBCursor cursor = getCollection().find(query);
while (cursor.hasNext()) {
System.out.println(cursor.next());
}// 输出结果:{ "_id" : { "$oid" : "547562c991818dbe4d03648a"} , "number" :
// 5}
/**
* 使用 "$in"
*/
BasicDBObject query_in = new BasicDBObject();
List list_in = new ArrayList();
list_in.add(9);
list_in.add(10);
query_in.put("number", new BasicDBObject("$in", list_in)); // 取number等于9和10的数据
DBCursor cursor_in = getCollection().find(query_in);
while (cursor_in.hasNext()) {
System.out.println(cursor_in.next());// 输出结果:{ "_id" : { "$oid" :
// "547562c991818dbe4d03648e"}
// , "number" : 9}
// { "_id" : { "$oid" : "547562c991818dbe4d03648f"} , "number" : 10}
}
/*
* 使用>,<等比较符号 "$lt" "$lte" "$gt" "$gte" "$ne" //小于 小于等于 大于 大于等于 不等于
*/
BasicDBObject query_gt = new BasicDBObject();
query_gt.put("number", new BasicDBObject("$gt", 5).append("$lte", 8)); // 大于5小于8
DBCursor cursor_gt = getCollection().find(query_gt);
while (cursor_gt.hasNext()) {
System.out.println(cursor_gt.next());// 输出结果:{ "_id" : { "$oid" :
// "547562c991818dbe4d03648b"}
// , "number" : 6}
// { "_id" : { "$oid" : "547562c991818dbe4d03648c"} , "number" : 7}
// { "_id" : { "$oid" : "547562c991818dbe4d03648d"} , "number" : 8}
} } /**
* 删除操作
*/
@SuppressWarnings("unchecked")
public static void removeFirstOne() throws MongoException,
UnknownHostException {
// 删除第一个document
DBObject dbObject = getCollection().findOne();
getCollection().remove(dbObject); // 删除指定的document
BasicDBObject document = new BasicDBObject();
document.put("number", 2);
getCollection().remove(document); // 使用$in 删除多个document
BasicDBObject query_in = new BasicDBObject();
List list_in = new ArrayList();
list_in.add(9);
list_in.add(10);
query_in.put("number", new BasicDBObject("$in", list_in)); // 先取number等于9和10的数据
getCollection().remove(query_in); // 删除所有的document
DBCursor cursor = getCollection().find();
while (cursor.hasNext()) {
getCollection().remove(cursor.next());
}
} /**
* 保存图片
*
* @throws IOException
*/
public static void savePhoto() throws IOException {
String newFileName = "test-mongo-image";
File imageFile = new File("C:\\Users\\xiao\\Desktop\\pda\\logo.gif");
GridFS gfsPhoto = new GridFS(getDb(), "photo");
GridFSInputFile gfsFile = gfsPhoto.createFile(imageFile);
gfsFile.setFilename(newFileName);
gfsFile.save();
} /**
* 读取图片
*
* @throws UnknownHostException
* @throws MongoException
*/
public static void readPhoto() throws UnknownHostException, MongoException {
String newFileName = "test-mongo-image";
GridFS gfsPhoto = new GridFS(getDb(), "photo");
GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
System.out.println(imageForOutput);
/**
*
*
*输出结果:{ "_id" : { "$oid" : "54756e479181e6adf838e1f0"} , "chunkSize" :
* 262144 , "length" : 5238 , "md5" : "a47baf8201db57a790c91c88329aaa69"
* , "filename" : "test-mongo-image" , "contentType" : null ,
* "uploadDate" : { "$date" : "2014-11-26T06:08:07.047Z"} , "aliases" :
* null }
*
*
*/
} /**
* 读取所有的图片
*
* @throws UnknownHostException
* @throws MongoException
*/
public static void readAllPhoto() throws UnknownHostException,
MongoException {
GridFS gfsPhoto = new GridFS(getDb(), "photo");
DBCursor cursor = gfsPhoto.getFileList();
while (cursor.hasNext()) {
System.out.println(cursor.next());
}
} /**
* 从数据库读取后写入到磁盘上
*
* @throws IOException
*/
public static void readToWrite() throws IOException {
String newFileName = "test-mongo-image";
GridFS gfsPhoto = new GridFS(getDb(), "photo");
GridFSDBFile imageForOutput = gfsPhoto.findOne(newFileName);
imageForOutput.writeTo("c:\\JavaWebHostingNew.png");
} /**
* 删除图片
*
* @throws UnknownHostException
* @throws MongoException
*/
public static void removePhotos() throws UnknownHostException,
MongoException {
String newFileName = "test-mongo-image";
GridFS gfsPhoto = new GridFS(getDb(), "photo");
gfsPhoto.remove(gfsPhoto.findOne(newFileName));
} public static void main(String[] args) throws Exception {
/**
* 插入 4种方式
*/
// insertByBasicDBObject();
// insertByBasicDBObjectBuilder();
// insertByMap();
// insertByJson();
/**
* 更新
* */
// update_1();
// update_inc();
// update_set();
// update_unset();
// update_multi();
/**
* 初始化需要查询的数据
*/
// init();
// findOne();
// getDocCollections();
// getDocCount();
// getDocCollectionsByCondition();
// removeFirstOne(); /**
* 图片操作
*/
// savePhoto();
// readPhoto();
// readAllPhoto();
// readToWrite();
// removePhotos();
System.out.println("done...."); }
} 源码地址:http://download.csdn.net/detail/u010497606/8200295
上一篇:HASH 字符串哈希 映射转化


下一篇:DevExpress ASP.NET 使用经验谈(7)-ASPxTreeList控件使用