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 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 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 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 mc = database.getCollection(collectionname);
FindIterable iterable = mc.find();
iterable.forEach(new Block() {
public void apply(final Document document) {
System.out.println(document);
}
});
// 6.关闭客户端
mongoClient.close();
}
}
4、遇到困难可以评论(有信必回)小轩微信17382121839。