整理的关于Java对mongodb进行的CURD操作工具类及源码

不爱说话爱技术,以下是我整理的关于对mongodb进行增删改查操作的一个工具类,恐有不足,向各位大拿们讨教。最后有一个源码及实现类和接口。

package com.iceter.DataBase;

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

import org.bson.Document;
import org.bson.conversions.Bson; 
import org.junit.Test; 
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
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; 
import com.mongodb.client.model.InsertOneOptions;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult; 
/**
 * 对mongodb的操作类
 * @author ice
 *
 */
public class IMongoJDBCUtilCJB{ 
	
	private static IMongoJDBCUtilCJB mongoUtil;

	private String address = "localhost";
	private int port = 27017;
	private String dataBase = "mycol";
	private String collection = "mycol";  
	
	MongoClient mongoClient ;            
	MongoDatabase mongoDatabase ;           
	MongoCollection<Document> mongoCol ;

	private void getMongoCon() {
		
		mongoClient = new MongoClient( address , port );             
		mongoDatabase = mongoClient.getDatabase(dataBase);               
		mongoCol = mongoDatabase.getCollection(collection);
	}
	//单利
	public static IMongoJDBCUtilCJB getInstance(String address,int port,String dataBase,String collection){
		if (mongoUtil!=null) {
			return mongoUtil;
		}else {
			return new IMongoJDBCUtilCJB(address,port,dataBase,collection);
		}

	} 
	/**
	 * 根据地址,数据库及连接名称连接到数据库
	 * @param address 数据库连接地址
	 * @param port	数据库端口
	 * @param dataBase 实例名
	 * @param collection 连接名
	 */
	public IMongoJDBCUtilCJB(String address,int port,String dataBase,String collection) {

		this.address = address;
		this.dataBase = dataBase;
		this.collection = collection;
		//实例化
		getMongoCon(); 
	}
	/**
	 * 连接到数据库
	 * @return 
	 */
	@Test
	public boolean mongodbConTest() { 
		
		try{    
			// 连接到 mongodb 服务
			MongoClient mongoClient = new MongoClient( address , port ); 
			// 连接到数据库
			MongoDatabase mongoDatabase = mongoClient.getDatabase(dataBase);  
			System.out.println("Connect to database successfully");
			mongoDatabase.createCollection(collection);  
			return true;
		}catch(Exception e){
			System.err.println(e.getClass().getName() + "->" + e.getMessage());
			return false;
		} 
	}

	/**
	 * 创建集合 
	 */
	@Test
	public void mongodbCreate() { 
			getMongoCon(); 
			mongoDatabase.createCollection(collection);  
	}

	/**
	 * 向mongodb添加数据
	 */
	@Test
	public void mongdbAddDoc(Document doc) {
 
		getMongoCon(); 
		mongoCol.insertOne(doc); 
	}
	/**
	 * 关闭mongodb连接
	 */
	@Test
	public void mongoClose() {

		getMongoCon(); 
		mongoClient.close();
	}

	/**
	 * 根据固定条件向mongodb添加数据 
	 */
	@Test
	public void mongdbAddDocByOptions(Document doc,InsertOneOptions options) {
 
		getMongoCon(); 
		mongoCol.insertOne(doc, options); 
		

	}
	/**
	 * 向mongodb添加多条数据
	 */
	@Test
	public void mongdbAddDocs(List<Document> list) {
 
		getMongoCon(); 
		mongoCol.insertMany(list);  
		

	}
	/**
	 * 向mongodb删除一条数据
	 * @param filter 
	 * 查询条件 //注意Bson的几个实现类,BasicDBObject, BsonDocument, 
	 * BsonDocumentWrapper, CommandResult, Document, RawBsonDocument 
	 */
	@Test
	public DeleteResult mougdbDel(BasicDBObject basic) {
 
		getMongoCon(); 
		Bson filter = basic; 
		DeleteResult dResult = mongoCol.deleteOne(filter); 
		
		return dResult; 
	}
	/**
	 * 向mongodb删除多条数据
	 * @param filter 
	 * 查询条件 //注意Bson的几个实现类,BasicDBObject, BsonDocument, 
	 * BsonDocumentWrapper, CommandResult, Document, RawBsonDocument 
	 */
	@Test
	public DeleteResult  mougdbDels(BasicDBObject basic) {
 
		getMongoCon(); 
		Bson filter = basic; 
		DeleteResult dResult = mongoCol.deleteMany(filter); 
		
		return dResult; 
	}
	/**
	 * 向mongodb修改单条数据
	 * @param filter 
	 * @param update
	 * @return
	 */
	@Test
	public UpdateResult mongdbUpdateOne(Bson filter, Bson update) {
 
		getMongoCon(); 
		UpdateResult result = mongoCol.updateOne(filter, update);
		return result; 
	} 
	/**
	 * 向mongodb修改单条数据
	 * @param filter 
	 * @param update
	 * @return
	 */
	@Test
	public UpdateResult mongdbUpdateMany(Bson filter, Bson update) {
 
		getMongoCon(); 
		UpdateResult result = mongoCol.updateMany(filter, update);
		return result; 
	}  
	/**
	 * mongodb根据固定条件查询数据查询数据
	 */
	@Test
	public List<Document> mongdbQuery(Bson bson) {

		getMongoCon(); 
		List<Document> array = new ArrayList<>(); 
		FindIterable<Document> findy = mongoCol.find(bson);
		MongoCursor<Document> cursor = findy.iterator();
		while (cursor.hasNext()) {

			array.add(cursor.next()); 
		}
		return array; 
	} 
	/**
	 * mongodb根据BasicDBObject中的固定条件查询数据查询数据
	 */
	@Test
	public List<Document> mongdbQuery(BasicDBObject obj) {

		getMongoCon(); 
		List<Document> array = new ArrayList<>();
		Bson bson = obj;
		FindIterable<Document> findy = mongoCol.find(bson);
		MongoCursor<Document> cursor = findy.iterator();
		while (cursor.hasNext()) {

			array.add(cursor.next()); 
		}
		return array; 
	} 
	/**
	 * 根据key和value值查询数据
	 * @param key 查询字段
	 * @param value 查询内容
	 * @return
	 */
	@Test
	public List<Document> mongdbQuery(String key,Object value) {

		getMongoCon(); 
		List<Document> array = new ArrayList<>();
		Bson bson = new BasicDBObject().append(key, value);
		FindIterable<Document> findy = mongoCol.find(bson);
		MongoCursor<Document> cursor = findy.iterator();
		while (cursor.hasNext()) {

			array.add(cursor.next()); 
		}
		return array; 
	} 
	/**
	 * 向mongodb查询所有数据
	 */
	@Test
	public List<Document> mongdbQuerys() {
		getMongoCon(); 
		List<Document> array = new ArrayList<>();
		FindIterable<Document> findAll = mongoCol.find();
		MongoCursor<Document> corsor = findAll.iterator();
		while (corsor.hasNext()) {
			 
			array.add(corsor.next()); 
		}
		return array;

	}
	/**
	 * 通过用户名密码登录(待测试)
	 */
	@Test
	public void getConUsePass(){ 
		try {  
			//连接到MongoDB服务 如果是远程连接可以替换“localhost”为服务器所在IP地址  
			//ServerAddress()两个参数分别为 服务器地址 和 端口  
			ServerAddress serverAddress = new ServerAddress(address,27017);  
			List<ServerAddress> addrs = new ArrayList<ServerAddress>();  
			addrs.add(serverAddress);  

			//MongoCredential.createScramSha1Credential()三个参数分别为 用户名 数据库名称 密码  
			MongoCredential credential = MongoCredential.createScramSha1Credential("username", "databaseName", "password".toCharArray());  
			List<MongoCredential> credentials = new ArrayList<MongoCredential>();  
			credentials.add(credential);  

			//通过连接认证获取MongoDB连接  
			MongoClient mongoClient = new MongoClient(addrs,credentials);  

			//连接到数据库  
			MongoDatabase mongoDatabase = mongoClient.getDatabase("databaseName");  
			System.out.println("Connect to database successfully");  
		} catch (Exception e) {  
			System.err.println(e.getClass().getName() + "->" + e.getMessage());  
		}   
	} 
	/**
	 * 测试类,仅供测试使用
	 */
	@Test
	public void mongodbTest() {
		try{   
			 
		}catch(Exception e){
			System.err.println(e.getClass().getName() + "->" + e.getMessage());
		}

	}
	/**                                                                                                
	 * 
	 * @param args
	 */
	public static void main( String args[] ){

		IMongoJDBCUtilCJB util = IMongoJDBCUtilCJB.getInstance("localhost", 27010, "database", "mycol");
//		IMongoJDBCUtil util = new IMongoJDBCUtil(address, 27010, "database", dataBase);  
//		util.mongoClose();
//		
//		 DeleteResult d = util.mougdbDel(new BasicDBObject().append("age", 200));
//		 System.out.println(d.getDeletedCount());
		util.mongodbTest();
	}

}


源码下载地址:点击打开链接

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 以下是一个简单的 MongoDB Java 工具类,可以用于连接 MongoDB 数据库并执行 CRUD 操作: ```java import com.mongodb.MongoClient; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import org.bson.Document; public class MongoDBUtil { private static final String HOST = "localhost"; private static final int PORT = 27017; private static final String DATABASE_NAME = "mydb"; private static MongoClient mongoClient; private static MongoDatabase mongoDatabase; /** * 获取 MongoDB 数据库连接 * @return */ public static MongoDatabase getMongoDatabase() { if (mongoDatabase == null) { mongoClient = new MongoClient(HOST, PORT); mongoDatabase = mongoClient.getDatabase(DATABASE_NAME); } return mongoDatabase; } /** * 获取 MongoDB Collection * @param collectionName * @return */ public static MongoCollection<Document> getCollection(String collectionName) { return getMongoDatabase().getCollection(collectionName); } /** * 插入文档 * @param collectionName * @param document */ public static void insert(String collectionName, Document document) { MongoCollection<Document> collection = getCollection(collectionName); collection.insertOne(document); } /** * 删除文档 * @param collectionName * @param filter */ public static void delete(String collectionName, Document filter) { MongoCollection<Document> collection = getCollection(collectionName); collection.deleteOne(filter); } /** * 更新文档 * @param collectionName * @param filter * @param update */ public static void update(String collectionName, Document filter, Document update) { MongoCollection<Document> collection = getCollection(collectionName); collection.updateOne(filter, new Document("$set", update)); } /** * 查询文档 * @param collectionName * @param filter * @return */ public static Document find(String collectionName, Document filter) { MongoCollection<Document> collection = getCollection(collectionName); return collection.find(filter).first(); } } ``` 使用示例: ```java public class Test { public static void main(String[] args) { MongoCollection<Document> collection = MongoDBUtil.getCollection("users"); // 插入文档 Document document = new Document("name", "张三") .append("age", 20) .append("gender", "男"); MongoDBUtil.insert("users", document); // 更新文档 Document filter = new Document("name", "张三"); Document update = new Document("age", 21); MongoDBUtil.update("users", filter, update); // 查询文档 Document result = MongoDBUtil.find("users", filter); System.out.println(result.toJson()); // 删除文档 MongoDBUtil.delete("users", filter); } } ``` ### 回答2: MongoDB Java工具类是一种用于连接和操作MongoDB数据库的工具。它提供了一组用于执行各种操作的方法,如插入、查询、更新和删除数据。 MongoDB Java工具类使用MongoDB提供的Java驱动程序进行操作。首先,我们需要建立与MongoDB数据库的连接。可以使用MongoClient类来创建并指定要连接的数据库主机和端口。例如,下面的代码片段展示了如何建立与本地MongoDB数据库的连接: ``` import com.mongodb.MongoClient; import com.mongodb.client.MongoDatabase; public class MongoDBUtil { private static MongoClient mongoClient; private static MongoDatabase database; public static void connect() { mongoClient = new MongoClient("localhost", 27017); database = mongoClient.getDatabase("mydb"); } // 其他操作方法 public static void close() { mongoClient.close(); } } ``` 在连接建立后,我们可以使用getCollection方法获取指定的集合,然后通过集合对象执行各种操作。例如,下面的代码片段展示了如何在指定集合中插入一条数据: ``` import org.bson.Document; import com.mongodb.client.MongoCollection; public static void insertData(String collectionName, Document data) { MongoCollection<Document> collection = database.getCollection(collectionName); collection.insertOne(data); } ``` 除了插入数据,我们还可以使用工具类的其他方法执行查询、更新和删除操作。例如,可以使用find方法执行查询并返回查询结果的游标对象。游标对象可以迭代获取查询结果的各个文档。 ``` import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCursor; public static void findData(String collectionName) { MongoCollection<Document> collection = database.getCollection(collectionName); FindIterable<Document> result = collection.find(); MongoCursor<Document> cursor = result.iterator(); while (cursor.hasNext()) { Document document = cursor.next(); System.out.println(document.toJson()); } } ``` 总之,MongoDB Java工具类提供了方便的方法来连接和操作MongoDB数据库。通过使用这些方法,我们可以轻松地执行插入、查询、更新和删除等操作。 ### 回答3: MongoDB是一种非关系型数据库,它的数据存储方式是以BSON(二进制JSON)文档的形式存储的。MongoDB Java工具类可以帮助我们在Java应用程序中操作MongoDB数据库。 首先,我们需要引入MongoDBJava驱动程序。可以通过Maven或Gradle添加相关依赖来导入驱动程序。 在Java代码中,我们可以使用Java驱动程序提供的API来连接MongoDB数据库,并执行各种操作,如插入、查询、更新和删除文档等。 以下是一个简单的MongoDB Java工具类的例子: 1. 导入所需的类和包: import com.mongodb.*; import org.bson.Document; 2. 创建一个MongoClient对象,用来连接MongoDB数据库: MongoClient mongoClient = new MongoClient("localhost", 27017); 3. 获取数据库对象: MongoDatabase database = mongoClient.getDatabase("mydb"); 4. 获取集合对象: MongoCollection<Document> collection = database.getCollection("mycollection"); 5. 插入文档: Document document = new Document("name", "John").append("age", 25).append("email", "[email protected]"); collection.insertOne(document); 6. 查询文档: Document query = new Document("name", "John"); FindIterable<Document> result = collection.find(query); for (Document doc : result) { System.out.println(doc); } 7. 更新文档: Document filter = new Document("name", "John"); Document update = new Document("$set", new Document("age", 30)); collection.updateOne(filter, update); 8. 删除文档: Document filter = new Document("name", "John"); collection.deleteOne(filter); 以上代码演示了一些常见的MongoDB操作。使用MongoDB Java工具类,可以根据自己的需求进行灵活的操作和扩展。通过与MongoDB的交互,我们可以方便地进行数据存储和检索,以及数据分析和处理等任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰夏之夜影

赠人玫瑰,手留余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值