文章目录
- MongoDB简单使用
- 1.基本增删改查
- 1.1提前准备
- 1.11 导入pom
- 1.12 连接工具类 MongoDBUtil
- 1.13 实体类
- 1.2 简单增删改查
- 1.2.1 增加
- 1.2.2修改
- 1.2.3查询
- 1.2.4删除
- 1.3 进阶版: java实体类 与表对应的增删改查
- 1.3.1增加、查询
MongoDB简单使用
1.基本增删改查
1.1提前准备
1.11 导入pom
<!-- mongo driver-->
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.6.4</version>
</dependency>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.26</version>
</dependency>
1.12 连接工具类 MongoDBUtil
public class MongoDBUtil {
/**
* 连接到数据库
* @param databaseName 数据库名字
* @return connect
*/
public static MongoDatabase getConnect(String databaseName){
//连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);
//返回连接数据库对象
return mongoDatabase;
}
/**
* 获取表对象
* @param databaseName 数据库名字
* @param table 表名字
* @return
*/
public static MongoCollection<Document> getTable (String databaseName,String table){
//连接到 mongodb 服务
MongoClient mongoClient = new MongoClient("localhost", 27017);
//连接到数据库
MongoDatabase mongoDatabase = mongoClient.getDatabase(databaseName);
//获取表对象
MongoCollection<Document> collection = mongoDatabase.getCollection(table);
return collection;
}
/**
* 创建编解码注册器,用来处理 pojo和bson之间的相互转换
* @return CodecRegistry
*/
public static CodecRegistry codecRegistry(){
return CodecRegistries.fromRegistries(MongoClient.getDefaultCodecRegistry(),
CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));
}
public static void close(MongoClient client){
client.close();
}
}
1.13 实体类
@Data
public class ProjectEntity {
@Override
public String toString() {
return "ProjectEntity{" +
"name='" + name + '\'' +
'}';
}
/**
* 工程名
*/
@Field
private String name;
public ProjectEntity() {
}
public ProjectEntity(String name) {
this.name = name;
}
1.2 简单增删改查
//创建集合 相当于表名
MongoCollection<Document> collection =MongoDBUtil.getTable("test","project");
1.2.1 增加
/**
* 添加test
* 创建document对象
*
* 插入一个文档,使用 MongoCollection 对象的 insertOne() 方法,
* 该方法接收一个 Document 对象作为要插入的数据
*/
@Test
public void test1(){
//创建document对象,进行增加操作
Document document = new Document();
document.append("name","张三")
.append("age","18")
.append("sex","男");
Map<String,Object> map = new HashMap<>();
collection.insertOne(document);
}
1.2.2修改
/**
* 修改测试
* 修改单个文档,使用 MongoCollection 对象的 updateOne() 方法,
* 该方法接收两个参数,第一个数据类型为 Bson 的过滤器筛选出需要修改的文档,
* 第二个参数数据类型为 Bson 指定如何修改筛选出的文档。然后修改过滤器筛选出的第一个文档
*
*/
@Test
public void test2(){
//过滤器
Bson bson = Filters.eq("name", "张三");
//指定修改的更新文档
Document document = new Document("$set", new Document("age", 15));
//修改
UpdateResult result = collection.updateOne(bson, document);
System.out.println(result);
}
1.2.3查询
/**
* 查询
* 使用 MongoCollection 对象的 find() 方法,
* 该方法有多个重载方法,可以使用不带参数的 find() 方法查询集合中的所有文档,
* 也可以通过传递一个 Bson 类型的 过滤器查询符合条件的文档。
* 这几个重载方法均返回一个 FindIterable 类型的对象,可通过该对象遍历出查询到的所有文档。
* Filters.eq() //匹配到等于指定值的数据
* Filters.gt() //匹配到大于指定值的数据
* Filters.gte() //匹配到大于等于定值的数据
* Filters.lt() //匹配到小于指定值的数据
*
Filters.regex() 模糊查询
FindIterable<Document> b=collection.find().skip(0).limit(3);//跳过第0条数据,一次看三条数据
*
* Bson b=new Document("id",-1);//根据id倒叙排序 1 升序 -1降序
* FindIterable<Document> d=collection.find().sort(b);
*/
@Test
public void test3(){
//find()查询所有
// FindIterable<Document> findIterable = collection.find();
//过滤器
Bson bson = Filters.gt("age",15);
//带条件查询
FindIterable<Document> documents = collection.find(bson).skip(0).limit(3).sort(new Document("age",-1));
//获取游标
MongoCursor<Document> cursor = documents.iterator();
while (cursor.hasNext()){
System.out.println("---"+cursor);
System.out.println(cursor.next());
}
}
1.2.4删除
/**
* 删除测试
*/
@Test
public void test4(){
// DeleteResult id = collection.deleteOne(Filters.eq("age",100));
// System.out.println(id);
}
1.3 进阶版: java实体类 与表对应的增删改查
//获取连接 数据库
MongoDatabase connect = MongoDBUtil.getConnect("weekly");
//创建集合 相当于表名
MongoCollection<Weekly> collection = connect.getCollection("weekly", Weekly.class).withCodecRegistry(MongoDBUtil.codecRegistry());
1.3.1增加、查询
collection.insertOne(new ProjectEntity("工程4"));
collection.insertMany(Arrays.asList(new ProjectEntity("工程1"),new ProjectEntity("工程2")));
FindIterable<ProjectEntity> projectEntities = collection.find();
MongoCursor<ProjectEntity> iterator = projectEntities.iterator();
// ProjectEntity first = projectEntities.first();
FindIterable<ProjectEntity> limit = projectEntities.skip(0).limit(5);
// System.out.println(limit);
while (iterator.hasNext()){
System.out.println(iterator.next());
}
其他调用方法都一样不再演示!!可以看上面简单的CRUD,方法都一样