持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
java链接MongoDB和链接mysql类似,需要新建一个maven项目
第一步新建maven项目
第二步:在 pom.xml
导入 mongodb-java 的驱动依赖,同时将已有 Junit 测试依赖的版本修改为 4.13.2
,代码如下所示 👇:
<!-- Junit 测试的jar包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- 导入 mongodb-java 的驱动依赖 -->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.3.1</version>
</dependency>
✨ 说明:
mongodb-driver
的驱动有两个:mongodb-driver-sync
和mongodb-java-driver
。在 MongoDB 官方文档中有提到,现在新程序建议使用mongodb-driver-sync
,但是旧的mongodb-java-driver
依然可用。不同的驱动依赖,API 会有所差别。
为了在测试时,控制台不会出现错误日志信息,可以在 pom.xml
文件中添加日志相关的依赖
在测试下面新建一个MongoDBTest
如何连接?
第一:连接MongoDB服务器 String uri = "mongodb://localhost:27017/?maxPoolSize=20&w=majority";
第二:uri 获取 MongoClient 对象 MongoClient client = MongoClients.create(uri);
第三:通过client获取数据库 MongoIterable names = client.listDatabaseNames();
- 这里通过
MongoClients.create(uri)
方法获取 MongoClient 对象;listDatabaseNames()
方法可以获取 MongoDB 数据库中所有已经存在的数据库。
直接Run Test
进行测试,结果如下图所示:
✨ 说明:MongoDB 默认只有这三个数据库。
在测试类添加一个创建数据库和集合方法
@Test
public void ceateCollection(){
// 获取(创建)指定的数据库对象 MongoDatabase
MongoDatabase db = client.getDatabase("test");
System.out.println(db.getName());
// 创建集合
db.createCollection("testtest");
}
✨ 说明:
getDatabase()
方法中指定的名称如果在 MongoDB 数据库已经存在,就表示获取当前这个MongoDatabase
数据库对象;如果不存在,就会先在 MongoDB 数据库创建这个数据库,并返回这个MongoDatabase
数据库对象。createCollection()
是给指定的数据库创建集合。
在 MongoDBTest
测试类中添加一个向集合中添加文档数据的方法,代码如下 👇:
@Test
public void insertDocument(){
MongoDatabase db = client.getDatabase("test");
// 获取指定的集合对象
MongoCollection<Document> docs = testtest.getCollection("lq");
Document doc = new Document();
doc.put("name", "张三");
doc.put("age", 30);
doc.put("sex", "男");
doc.put("语文成绩", 80);
doc.put("数学成绩", 100);
docs.insertOne(doc);
}
在 MongoDBTest
测试类中添加一个查询文档信息的方法,代码如下 👇:
@Test
public void findDocument(){
MongoDatabase db = client.getDatabase("test");
// 获取指定的集合对象
MongoCollection<Document> docs = db.getCollection("testtest");
// 获取集合中的第一条数据
Document document = docs.find().first();
System.out.println(document);
}
在 MongoDBTest
测试类中添加一个修改文档信息的方法,代码如下 👇:
@Test
public void updateDocument(){
MongoDatabase db = client.getDatabase("test");
// 获取指定的集合对象
MongoCollection<Document> docs = db.getCollection("testtest");
// 更新文档,将文档中 name="张三" 修改为 name="张三1"
docs.updateOne(Filters.eq("name","张三"), new Document("$set",new Document("name", "张三1")));
//获取集合中的第一条数据
Document document = docs.find().first();
System.out.println(document);
}
✨ 说明:
updateOne()
是用来更新一条文档信息的,其中第一个参数Filters.eq("name","张三")
是一个过滤条件(查询 name="张三" 的文档),第二参数是一个 Document 对象(这个对象的第一个参数为 "$set" 表示修改操作,第二个参数为将要修改的 Document 文档,这里存储了要修改的数据信息)。
在 MongoDBTest
测试类中添加一个删除文档信息的方法,代码如下 👇:
@Test
public void deleteDocument(){
MongoDatabase db = client.getDatabase("test");
// 获取指定的集合对象
MongoCollection<Document> docs = db.getCollection("testtest");
// 删除集合中为 name="张三" 的文档
docs.deleteOne(Filters.eq("name","张三1"));
// 获取集合中的第一条数据
Document document = docs.find().first();
System.out.println(document);
}