Java使用mongodb实现增删改查的一个小demo案例

1、MongoDB的3.x版本java驱动相对2.x做了全新的设计,类库和使用方法上有很大区别。例如用Document替换BasicDBObject本文整理了基于3.2版本的常用增删改查操作的使用方法。

1、先导入jar包 mongo-java-driver-3.2.2.jar 如下图所示:

在这里插入图片描述

2、测试类

import java.net.UnknownHostException;
/**
 * 测试类 直接调用下列注释的方法 先一步一步看懂原理 就可以自己封装了 入门级的mongodb的demo
 * 
 * @author Xuan
 * 
 */
public class Test {

	public static void main(String[] args) throws UnknownHostException {
		// 调用新增数据的方法参数1:数据库名称 2:集合名(可以理解为表名)3:键,4:值
		// 如果没有数据库和列会自动帮你创建我里面封装好了,可以进去看原理
		MongodbUtils.addmongodb("xuan", "testmongodb", "test", "测试的数据");
		// 调用删除数据的方法
		// MongodbUtils.deletemongodb("数据库名", "集合名(可理解为表名)", "要删除的key",
		// "要删除的value");
		// 修改的方法
		// MongodbUtils.updatemongodb("数据库名", "集合名(可理解为表名)",new
		// Document("旧数据key","旧数据value"),new Document("新数据key","新数据value"));
		// 打印某个数据库中的某个集合的所有数据
		MongodbUtils.printCollection("数据库名", "集合名(可理解为表名)");
	}

}

3、封装了增删改查的mongodb工具类

import org.bson.Document;
import com.mongodb.Block;
import com.mongodb.MongoClient;
import com.mongodb.client.FindIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
/**
 * 工具类
 * 封装了增删改查的方法
 * @author Xuan
 *
 */
public class MongodbUtils {
	private static final String MONGO_HOST = "localhost";// 地址
	private static final Integer MONGO_PORT = 27017;// 端口
	private static final String MONGO_USERNAME = "";// 账号
	private static final String MONGO_PASSWORD = "";// 密码
	private static final String MONGO_DB_NAME = "xuan";// 要操作的数据库名
	private static final String MONGO_COLLECTION_NAME = "xuantest";//要操作的集合

	/**
	 * 增加mongodb数据
	 * 
	 * @param databasename
	 *            数据库名
	 * @param collectionname
	 *            集合名
	 * @param key
	 *            键
	 * @param value值
	 */
	public static void addmongodb(String databasename, String collectionname,
			String key, String value) {
		// 1.获取Mongo客户端
		MongoClient mongoClient = new MongoClient("localhost",
				MongodbUtils.MONGO_PORT);
		// 2.获取所有db名称并打印(mongodb未开启auth认证下可用)
		MongoDatabase database = mongoClient.getDatabase(databasename);
		// 3.如果是空则创建一个集合
		if (database.getCollection(collectionname) == null) {
			database.createCollection(collectionname);
		}
		// 4.得到我创建的集合
		MongoCollection<Document> mc = database.getCollection(collectionname);
		// 5.存入一个键值对
		mc.insertOne(new Document(key, value));
		// 6.关闭客户端
		mongoClient.close();
	}

	/**
	 * 删除mongodb数据
	 * 
	 * @param databasename
	 *            数据库名
	 * @param collectionname
	 *            集合名
	 * @param key
	 *            键
	 * @param value值
	 */
	public static void deletemongodb(String databasename,
			String collectionname, String key, String value) {
		// 1.获取Mongo客户端
		MongoClient mongoClient = new MongoClient("localhost",
				MongodbUtils.MONGO_PORT);
		// 2.获取所有db名称并打印(mongodb未开启auth认证下可用)
		MongoDatabase database = mongoClient.getDatabase(databasename);
		// 3.如果是空则创建一个集合
		if (database.getCollection(collectionname) == null) {
			database.createCollection(collectionname);
		}
		// 4.得到我创建的集合
		MongoCollection<Document> mc = database.getCollection(collectionname);
		// 5.根据键值对删除数据
		mc.findOneAndDelete(new Document(key, value));
		// 6.关闭客户端
		mongoClient.close();
	}

	/**
	 * 修改数据
	 * 
	 * @param databasename
	 *            数据库名
	 * @param collectionname
	 *            集合名
	 * @param oldDocument
	 *            旧数据
	 * @param newDocument
	 *            新数据
	 */
	public static void updatemongodb(String databasename,
			String collectionname, Document oldDocument, Document newDocument) {
		// 1.获取Mongo客户端
		MongoClient mongoClient = new MongoClient("localhost",
				MongodbUtils.MONGO_PORT);
		// 2.获取所有db名称并打印(mongodb未开启auth认证下可用)
		MongoDatabase database = mongoClient.getDatabase(databasename);
		// 3.如果是空则创建一个集合
		if (database.getCollection(collectionname) == null) {
			database.createCollection(collectionname);
		}
		// 4.得到我创建的集合
		MongoCollection<Document> mc = database.getCollection(collectionname);
		// 5.根据键值对删除数据
		mc.replaceOne(oldDocument, newDocument);
		// 6.关闭客户端
		mongoClient.close();
	}

	/**
	 * 输出一个集合的所有数据
	 * 
	 * @param databasename
	 * @param collectionname
	 */
	public static void printCollection(String databasename,
			String collectionname) {
		// 1.获取Mongo客户端
		MongoClient mongoClient = new MongoClient("localhost",
				MongodbUtils.MONGO_PORT);
		// 2.获取所有db名称并打印(mongodb未开启auth认证下可用)
		MongoDatabase database = mongoClient.getDatabase(databasename);
		// 3.如果是空则创建一个集合
		if (database.getCollection(collectionname) == null) {
			database.createCollection(collectionname);
		}
		// 4.得到我创建的集合
		MongoCollection<Document> mc = database.getCollection(collectionname);
		FindIterable<Document> iterable = mc.find();
		iterable.forEach(new Block<Document>() {
			public void apply(final Document document) {
				System.out.println(document);
			}
		});
		// 6.关闭客户端
		mongoClient.close();
	}

}

4、遇到困难可以评论(有信必回)小轩微信17382121839。

发布了47 篇原创文章 · 获赞 57 · 访问量 8896

猜你喜欢

转载自blog.csdn.net/qq_41741884/article/details/93550612