1、导入驱动
导入MongoDB JDBC 驱动 下载链接
导入测试相关jar包
-
juit-4.12.jar
-
hamcrest-.2.2.jar
2、建立连接
下面的示例显示了连接到本地计算机上的数据库的五种方法。如果数据库不存在,MongoDB 将为你创建它。
- 这里的 “localhost” 表示连接的服务器地址,27017 为端口号
MongoClient mongoClient = new MongoClient("localhost", 27017);
- 可以省略 端口号 不写,系统将默认端口号为 27017
MongoClient mongoClient = new MongoClient( "localhost" );
- 也可以将 服务器地址 和 端口号 都省略,系统默认服务器地址为 “localhost”,端口号为 27017
MongoClient mongoClient = new MongoClient();
- 指定MongoClinetURI 连接字符串
MongoClientURI connectionString = new MongoClientURI("mongodb://localhost:27017");
MongoClient mongoClient = new MongoClient(connectionString);
3、访问数据库
使用MongoClient里的getDatabase() 方法访问数据库。如果数据库不存在,MongoDB 会在首次存储该数据库数据时创建该数据库。
MongoDatabase db = mongoClient.getDatabase("stuTest");
4、访问集合
使用MongoDatabase里的getCollection()方法访问集合。如果集合不存在,MongoDB 会在首次存储该集合的数据时创建该集合
MongoCollection<Document> students = db.getCollection("students");
5、创建文档
5.1 插入一个文档
若要在集合中插入单个文档,可以使用集合的方法insertOne()
@Test
public void insertOne() {
//创建文档
Document doc = new Document("name", "star潮")
.append("age", "23")
.append("addr", "亳州")
.append("course", Arrays.asList("MongoDB", "机器学习", "嵌入式", "软件工程"));
//插入数据库
students.insertOne(doc);
}
5.2 插入多个文档
若要添加多个文档,可以使用集合的insertMany()方法
@Test
public void insertMany() {
//创建文档
Document doc1 = new Document("name", "海宁大哥")
.append("age", "18")
.append("addr", "南京")
.append("course", Arrays.asList("机器学习"));
Document doc2 = new Document("name", "刘梅西")
.append("age", "23")
.append("addr", "芜湖")
.append("course", Arrays.asList("知识产权", "信息检索", "中特", "自然辨证法"));
Document doc3 = new Document("name", "张C罗")
.append("age", "22")
.append("addr", "蚌埠")
.append("course", Arrays.asList("MongoDB"));
ArrayList<Document> list = new ArrayList<>();
list.add(doc1);
list.add(doc2);
list.add(doc3);
//插入数据库
students.insertMany(list);
}
6、查询集合
6.1 查找集合中的第一个文档
Document first = students.find().first();
System.out.println(first);
6.2 查找集合中的所有文档
//获取集合中的所有文档
FindIterable<Document> iterable = students.find();
MongoCursor<Document> cursor = iterable.iterator();
while (cursor.hasNext()) {
System.out.println(cursor.next().toJson());
}
6.3 查找与筛选器匹配的文档
@Test
public void findFilter() {
//指定查询过滤器
Bson eq = eq("course", "MongoDB");
//查找字段具有该值的第一个文档
Document first = students.find(eq).first();
System.out.println(first.toJson());
//查找字段具有该值的所有文档
FindIterable<Document> iterable = students.find(eq);
MongoCursor<Document> iterator = iterable.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
7、更新文档
7.1 要更新单个文档
@Test
public void updateOne() {
//指定过滤器
Bson eq = eq("name", "star潮");
//更新一个文档
UpdateResult updateResult = students.updateOne(eq, new Document("$set", new Document("name", "张XC")));
System.out.println(updateResult);
}
7.2 更新多个文档
//把大于20岁的学生年龄改成18岁
@Test
public void updateMany() {
Bson gt = Filters.gt("age", "20");
UpdateResult updateResult = students.updateMany(gt, new Document("$set", new Document("age", "18")));
System.out.println(updateResult);
}
8、删除文档
@Test
public void delete() {
//删除一条文档
students.deleteOne(eq("name","张XC"));
//删除多条文档
students.deleteMany(eq("age","18"));
}