mongodb的jar包下载
java mongodb 驱动
https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver/3.4.1/
我下载的是(mongo-java-driver-3.0.1.jar)
java 实现mongodb的连接关闭操作,写一个mongodbHelper
package com.java.dao;
import com.mongodb.MongoClient;
import com.mongodb.client.MongoDatabase;
public class MongoHelper {
static final String DBName = "weibo";
static final String ServerAddress = "127.0.0.1";
static final int PORT = 27017;
public MongoHelper(){
}
public MongoClient getMongoClient( ){
MongoClient mongoClient = null;
try {
// 连接到 mongodb 服务
mongoClient = new MongoClient(ServerAddress, PORT);
System.out.println("Connect to mongodb successfully");
} catch (Exception e) {
System.err.println(e.getClass().getName() + ": " + e.getMessage());
}
return mongoClient;
}
public MongoDatabase getMongoDataBase(MongoClient mongoClient) {
MongoDatabase mongoDataBase = null;
try {
if (mongoClient != null) {
// 连接到数据库
mongoDataBase = mongoClient.getDatabase(DBName);
System.out.println("Connect to DataBase successfully");
} else {
throw new RuntimeException("MongoClient不能够为空");
}
} catch (Exception e) {
e.printStackTrace();
}
return mongoDataBase;
}
public void closeMongoClient(MongoDatabase mongoDataBase,MongoClient mongoClient ) {
if (mongoDataBase != null) {
mongoDataBase = null;
}
if (mongoClient != null) {
mongoClient.close();
}
System.out.println("CloseMongoClient successfully");
}
}
连接成功后进行增删查改操作
这是基本增删查改的接口
package com.java.dao;
import java.util.Map;
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoDatabase;
/** * Dao 层接口 * */
public interface MongoDao {
/** * Get Data BY ID * * @param db * @param table * @param Id * @throws Exception */
public Map queryByID(MongoDatabase db, String table, Object Id) throws Exception;
/** * Insert Data * * @param db * @param table * @param document */
public boolean insert(MongoDatabase db, String table, Document doc);
/** * Delete Many Data.if doc is empty will delete all Data * * @param db * @param table * @param document */
public boolean delete(MongoDatabase db, String table, BasicDBObject doc);
/** * Update All Data * * @param db * @param table * @param oldDoc * @param newDoc */
public boolean update(MongoDatabase db, String table, BasicDBObject oldDoc,
BasicDBObject newDoc);
}
实现上面的接口并且扩充方法
package com.java.dao;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.bson.Document;
import com.java.exception.CustomException;
import com.java.service.JsonStrToMap;
import com.mongodb.BasicDBObject;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
/** * 实现接口 * @author iiip * */
public class MongoDaoImpl implements MongoDao {
@Override
public Map queryByID(MongoDatabase db, String table, Object Id) throws Exception{
MongoCollection collection = db.getCollection(table);
BasicDBObject query = new BasicDBObject("_id", Id);
// DBObject接口和BasicDBObject对象:表示一个具体的记录,BasicDBObject实现了DBObject,是key-value的数据结构,用起来和HashMap是基本一致的。
FindIterable iterable = collection.find(query);
// for (Document dd : iterable) {
// int dudu = dd.getInteger("上海"); // 读取响应的数据
// System.out.println("dudududu:"+dudu);
// }
Map jsonStrToMap = null;
MongoCursor cursor = iterable.iterator();
while (cursor.hasNext()) {
Document user = cursor.next();
String jsonString = user.toJson();
jsonStrToMap = JsonStrToMap.jsonStrToMap(jsonString);//这里用到我自己写的方法,主要是包json字符串转换成map格式,为后面做准备,方法放在后面
}
System.out.println("检索ID完毕");
return jsonStrToMap;
}
/** * 根据一个doc,来检索,当doc是空的时候检索全部 * @param db * @param table * @param doc */
public List
前面用到的一个类方法JsonStrToMap.jsonStrToMap
package com.java.service;
import java.util.HashMap;
import java.util.Map;
import com.mongodb.util.JSON;
public class JsonStrToMap {
/** * json 字符串转化为map格式 * @param jsonString * @return */
public static Map jsonStrToMap(String jsonString) {
Object parseObj = JSON.parse(jsonString); // 反序列化 把json 转化为对象
Map map = (HashMap) parseObj; // 把对象转化为map
return map;
}
}
测试方法
package com.java.dao;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bson.Document;
import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoDatabase;
import com.mongodb.util.JSON;
/** * 测试类 * @author koo * */
public class MainMonHelperImpl {
public static void main(String[] args) {
MongoHelper mongoHelper = new MongoHelper();
MongoClient mongoClient = mongoHelper.getMongoClient();
MongoDatabase mongoDataBase = mongoHelper.getMongoDataBase(mongoClient);
MongoDaoImpl mongoDaoImpl = new MongoDaoImpl();
// * 直接用BasicDBObject进行CRUD
// mongoDaoImpl.insert(mongoDataBase, table, new Document(areaMap));//插入document
// mongoDaoImpl.queryByID(mongoDataBase, table, 1);//检索event_id,注意id类型是字符串还是int
// BasicDBObject document2 = new BasicDBObject("likes",1000);
// document2.append("event_id", "55");
// mongoDaoImpl.queryByDoc(mongoDataBase, table, document2);//检索doc,可以根据doc(key,value)来查找,当doc是空的时候,检索全部
// mongoDaoImpl.queryAll(mongoDataBase, table); //查询全部
// BasicDBObject document3 = new BasicDBObject("likes",200);
// mongoDaoImpl.delete(mongoDataBase, table, document3);//删除doc 的全部信息,当doc 是空,则删除全部
// BasicDBObject document3 = new BasicDBObject("likes", 1000);
// mongoDaoImpl.deleteOne(mongoDataBase, table, document3);//删除doc 的一个信息
// 更新文档 将文档中likes=100的文档修改为likes=200
// BasicDBObject whereDoc = new BasicDBObject("likes",1000);
// BasicDBObject updateDoc = new BasicDBObject("likes",255);
// mongoDaoImpl.update(mongoDataBase, table, whereDoc, updateDoc);//更新全部,查找到oldDoc的数据,更新newDoc的数据
// BasicDBObject whereDoc = new BasicDBObject("likes",255);
// BasicDBObject updateDoc = new BasicDBObject("event_id",205);
// mongoDaoImpl.updateOne(mongoDataBase, table, whereDoc, updateDoc);//更新全部,查找到oldDoc的数据,更新newDoc的数据
//------------------------------------------------
/** * 使用map 进行CRUD操作 */
// System.out.println("测试map");
// Map areaMap1 = new HashMap();
// areaMap1.put("_id", 2);
// areaMap1.put("北京", 5);
// areaMap1.put("上海", 14);
// areaMap1.put("广州",8);
// areaMap1.put("深圳",0.5);
//把map反序列化
// System.out.println("map parse: " + JSON.parse(JSON.serialize(areaMap)));
// 根据map 到mongodb查询
// FindIterable queryByDocResult = mongoDaoImpl.queryByDoc(mongoDataBase, areaTable, new BasicDBObject(areaMap1));
// mongoDaoImpl.printFindIterable(queryByDocResult);
// 插入map 到mongodb
// mongoDaoImpl.insert(mongoDataBase, areaTable, new Document(areaMap1));
// Map areaMap2 = new HashMap();
// Map areaMap3 = new HashMap();
// areaMap2.put("_id", 10);
// areaMap2.put("北京", 5);
//
// areaMap3.put("_id", 11);
// areaMap3.put("北京", 5);
// List docList = new ArrayList();
// docList.add(new Document(areaMap2));
// docList.add(new Document(areaMap3));
// mongoDaoImpl.insertMany(mongoDataBase, areaTable, docList);
// 根据map 删除mongodb
// mongoDaoImpl.delete(mongoDataBase, areaTable, new BasicDBObject(areaMap1));
// mongoDaoImpl.deleteOne(mongoDataBase, areaTable, new BasicDBObject(areaMap1));
//根据map 更新mongodb
// Map updateDoc = new HashMap();
// Map wehereDoc = new HashMap();
// wehereDoc.put("_id", 4);
// updateDoc.put("上海",25);
// mongoDaoImpl.update(mongoDataBase, areaTable, new BasicDBObject(wehereDoc), new BasicDBObject(updateDoc));
// mongoDaoImpl.updateOne(mongoDataBase, areaTable, new BasicDBObject(wehereDoc), new BasicDBObject(updateDoc));
//检索全部
// FindIterable queryAllResult = mongoDaoImpl.queryAll(mongoDataBase, areaTable);
// mongoDaoImpl.printFindIterable(queryAllResult);
// mongoHelper.closeMongoClient(mongoDataBase,mongoClient);
}
}
参考:
mongoUtil java heleper
http://blog.csdn.net/guoxingege/article/details/47439581
语法:
http://www.runoob.com/mongodb/mongodb-java.html
文档
http://mongodb.github.io/mongo-java-driver/3.0/driver/getting-started/quick-tour/
java mongodb 驱动
https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb-driver/3.4.1/