MongoDB从不懂到装懂其三(Java操作MongoDB)


没什么好说的,和上一篇一样,只不过这一篇采用的语言环境是Java。


直接放代码吧,在代码中关于增删改查都做了详细的说明。

首先是一个MongoDB的帮助类,在这个类中定义了增删改查各种函数的实现,

然后是一个主函数入口,用来测试类的实现。


关于MongoDB Java 帮助类:

package com.blyang;

import java.util.ArrayList;
import java.util.List;

import org.bson.Document;
import org.bson.conversions.Bson;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.Filters;

public class MongoDB {
	
	/**
	 * 设置数据库连接地址
	 */
	private final String CONN_HOST = "127.0.0.1";
	
	/**
	 * 设置数据库连接端口号
	 */
	private final int CONN_PORT = 27017;
	
	/**
	 * MongoDB连接实例
	 */
	public MongoClient mongoClient = null;
	
	/**
	 * MongoDB数据库实例
	 */
	public MongoDatabase mongoDatabase= null;
	
	/**
	 * 构造方法
	 * 获取数据库实例
	 * @param DB_Name
	 */
	public MongoDB(String DB_Name){
		this.mongoClient = new MongoClient(CONN_HOST, CONN_PORT);
		this.mongoDatabase = this.mongoClient.getDatabase(DB_Name);
	}

	/**
	 * 创建数据库集合
	 * @param collName 数据库表名
	 */
	public boolean createCollection(String collName){
		try
		{
			this.mongoDatabase.createCollection(collName);
		}
		catch(Exception e)
		{
			System.out.println(e.getMessage());
			return false;
		}
		return true;
	}
	
	/**
	 * 获取数据库集合
	 * @param collName
	 * @return
	 */
	public MongoCollection getCollection(String collName){
		return this.mongoDatabase.getCollection(collName);
	}
	
	/**
	 * 插入单个文档
	 * @param doc Bson文档
	 * @param collName 集合名称
	 */
	public void insert(Document doc, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		coll.insertOne(doc);
	}
	
	/**
	 * 批量插入文档
	 * @param list List类型文档
	 * @param collName 集合名称
	 */
	public void insert(List list, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		coll.insertMany(list);
	}

	/**
	 * 查找集合内所有Document
	 * @param collName
	 * @return
	 */
	public List findAll(String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		List result = new ArrayList();
		FindIterable findIterable = coll.find();
		MongoCursor mongoCursor = findIterable.iterator();
		while(mongoCursor.hasNext()){
			result.add(mongoCursor.next());
		}
		return result;
	}
	
	/**
	 * 指定条件查找
	 * @param query
	 * @param collName
	 * @return
	 */
	public List findAll(BasicDBObject query, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		List result = new ArrayList();
		FindIterable findIterable = coll.find(query);
		MongoCursor mongoCursor = findIterable.iterator();
		while(mongoCursor.hasNext()){
			result.add(mongoCursor.next());
		}
		return result;
	}
	

	/**
	 * 指定条件查找指定字段
	 * @param query
	 * @param collName
	 * @return
	 */
	public List findAll(BasicDBObject query, BasicDBObject key, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		List result = new ArrayList();
		FindIterable findIterable = coll.find(query).projection(key);
		MongoCursor mongoCursor = findIterable.iterator();
		while(mongoCursor.hasNext()){
			result.add(mongoCursor.next());
		}
		return result;
	}
	
	
	
	/**
	 * 查找一个
	 * @param query
	 * @param collName
	 * @return
	 */
	public Document findOne(BasicDBObject query,String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		Document result = new Document();
		FindIterable findIterable = coll.find(query).limit(1);
		result = findIterable.iterator().next();
		return result;
	}
	

	/**
	 * 删除集合中的所有数据
	 * @param collName
	 */
	public void deleteAll(String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		BasicDBObject delDbo=new BasicDBObject();
		delDbo.append("_id", -1);
		coll.deleteMany(Filters.not(delDbo));
	}
	
	
	/**
	 * 删除指定的所有数据
	 * @param b
	 * @param collName
	 */
	public void deleteAll(Bson b, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		coll.deleteMany(b);
	}
	
	
	/**
	 * 删除指定的一条数据
	 * @param b
	 * @param collName
	 */
	public void deleteOne(Bson b, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		coll.deleteOne(b);
	}
	
	
	//collection.updateMany(Filters.eq("likes", 100), new Document("$set", new Document("likes",200)) );  
	
	/**
	 * 按查询条件批量修改
	 * @param b
	 * @param doc
	 * @param collName
	 */
	public void updateAll(Bson b, Document doc, String collName){
		MongoCollection coll = this.mongoDatabase.getCollection(collName);
		coll.updateMany(b, doc);
	}
	
}






关于MongoDB Java测试实现:

package com.blyang;

public class Mongo {
    
  public static void main(String[] args) {  

	  String collName = "hello";
	  MongoDB mongo = new MongoDB("blyang");
	  
	  //创建
	  if(mongo.createCollection(collName)){
		  System.out.println("hello create success");
	  }
	  else{
		  System.out.println("create fail");
	  }
	  
	  
//	  //单个插入
//	  Document docA = new Document();
//	  docA.append("key1", "val1");
//	  docA.append("key2", "val2");
//	  docA.append("key3", "val3");
//	  mongo.insert(docA, collName);
	  
	  
//	  //批量插入
//	  List list = new ArrayList();
//	  for(int i=0; i<10; i++){
//		  Document doc = new Document();
//		  doc.append("key1", "val" + i);
//		  doc.append("key2", "val" + i);
//		  doc.append("key3", "val" + i);
//		  list.add(doc);
//	  }
//	  mongo.insert(list, collName);
	  
	  
//	  //查询所有
//	  List findAll = mongo.findAll(collName);
//	  System.out.println(findAll.size());
//	  for(Document doc : findAll){
//		  System.out.println(doc.get("key3"));
//	  }
	  
	  
//	  //指定条件查找全部
//	  BasicDBObject query =  new BasicDBObject();
//	  query.append("key3", "val99");
//	  List findAllB = mongo.findAll(query, collName);
//	  System.out.println(findAllB.size());
//	  for(Document doc : findAllB){
//		  System.out.println(doc.toString());
//	  }
	  
	  
//	  //指定条件查找全部,返回指定字段
//	  BasicDBObject query =  new BasicDBObject();
//	  query.append("key3", "val99");
//	  BasicDBObject key = new BasicDBObject();
//	  key.append("key2",1);
//	  key.append("_id", 0);
//	  List findAllB = mongo.findAll(query,key, collName);
//	  System.out.println(findAllB.size());
//	  for(Document doc : findAllB){
//		  System.out.println(doc.toString());
//	  }
	  
	  
//	  //指定条件查找一个
//	  BasicDBObject queryOne = new BasicDBObject();
//	  queryOne.append("key3", "val99");
//	  Document docOne = mongo.findOne(queryOne, collName);
//	  System.out.println(docOne);
	  
//	  //删除集合中的所有数据
//	  mongo.deleteAll(collName);
	  
	  
//	  //删除集合中指定的所有数据
//	  Bson b = Filters.eq("key1", "val1");
//	  mongo.deleteAll(b,collName);
	  
//	  //删除指定的一个数据
//	  Bson b = Filters.eq("key1", "val1");
//	  mongo.deleteOne(b,collName);
	  
	  
//	  //按查询条件批量更新
//	  Bson b = Filters.eq("key1", "val1");
//	  Document doc = new Document();
//	  doc.append("key1", "val100");
//	  Document docT = new Document("$set", doc);
//	  mongo.updateAll(b, docT, collName);
	  
  }  
}




好啦,暂时就这样啦,需要调用的时候直接拷贝帮助类进入,然后调用帮助类中的增删改查的方法即可。





你可能感兴趣的:(Database)