做网站安全认证,深圳网站开发公司h5,wordpress 文章去掉时间,做美图 网站有哪些【MongoDB】SpringBoot整合MongoDB 文章目录 【MongoDB】SpringBoot整合MongoDB0. 准备工作1. 集合操作1.1 创建集合1.2 删除集合 2. 相关注解3. 文档操作3.1 添加文档3.2 批量添加文档3.3 查询文档3.3.1 查询所有文档3.3.2 根据id查询3.3.3 等值查询3.3.4 范围查询3.3.5 and查…【MongoDB】SpringBoot整合MongoDB 文章目录 【MongoDB】SpringBoot整合MongoDB0. 准备工作1. 集合操作1.1 创建集合1.2 删除集合 2. 相关注解3. 文档操作3.1 添加文档3.2 批量添加文档3.3 查询文档3.3.1 查询所有文档3.3.2 根据id查询3.3.3 等值查询3.3.4 范围查询3.3.5 and查询3.3.6 or查询3.3.7 and or 查询3.3.8 排序3.3.9 分页查询3.3.10 查询总条数3.3.11 去重3.3.12 json字符串查询 3.4 修改文档3.4.1 更新单条文档3.4.2 批量更新文档3.4.3 修改或插入文档 3.5 删除文档3.5.1 删除所有文档3.5.2 条件删除 0. 准备工作
引入依赖
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-mongodb/artifactId
/dependency1. 集合操作
1.1 创建集合
创建一个 ”products“ 集合如果不存在则创建存在则不创建。
Test
public void createCollection() {//不存在集合则创建if (!mongoTemplate.collectionExists(products)) {mongoTemplate.createCollection(products);}
}1.2 删除集合
Test
public void dropCollection() {mongoTemplate.dropCollection(products);
}2. 相关注解
Document 修饰范围用在类上作用用来映射这个类的一个对象为 mongo 中一条文档数据属性{value、collection} 用来指定操作的集合名称 Id 修饰范围用在成员变量、方法上作用用来将成员变量的值映射为文档的 _id 的值 Field 修饰范围用在成员变量、方法上作用用来将成员变量以及值映射为文档中一个 keyvalue 对属性{namevalue} 用来指定在文档中key的名称默认为成员变量名 Transient 修饰范围用在成员变量、方法上作用用来指定某个成员变量不参与文档的序列化 3. 文档操作
首先创建一个 User 类给它一些基本属性。
Data
AllArgsConstructor
NoArgsConstructor
//表示类实例代表mongo中一条文档
Document(users)
public class User {private Integer id;private String name;private Double salary;private Date birthday;
}3.1 添加文档
向 users 集合中添加文档
Test
public void saveDocument() {User user new User(1, zhj, 25000.0, new Date());//mongoTemplate.save(user);mongoTemplate.insert(user);
}insert()插入重复数据时该方法会报异常提示主键重复。save()对已经存在的数据进行更新。它的功能就是 saveOrUpdate 3.2 批量添加文档
Test
public void batchSaveDocument() {ListUser users Arrays.asList(new User(3, 张三, 25000.0, new Date()), new User(4, 李四, 25000.0, new Date()));mongoTemplate.insert(users,User.class);
}批量添加建议使用 insert() 方法可以一次性插入整个数据效率更高。 3.3 查询文档 3.3.1 查询所有文档
ListUser users mongoTemplate.findAll(User.class);
//ListUser users1 mongoTemplate.findAll(User.class, users);3.3.2 根据id查询
User user mongoTemplate.findById(1, User.class);3.3.3 等值查询
ListUser users1 mongoTemplate.find(Query.query(Criteria.where(name).is(zs)), User.class);3.3.4 范围查询
ListUser users2 mongoTemplate.find(Query.query(Criteria.where(salary).gt(30000)), User.class);3.3.5 and查询
ListUser users3 mongoTemplate.find(Query.query(Criteria.where(name).is(zs).and(salary).is(25000)), User.class);3.3.6 or查询
Criteria criteria new Criteria();
criteria.orOperator(Criteria.where(name).is(张三),Criteria.where(name).is(李四)
);
ListUser users4 mongoTemplate.find(Query.query(criteria), User.class);3.3.7 and or 查询
ListUser users5 mongoTemplate.find(Query.query(Criteria.where(salary).is(25000.0).orOperator(Criteria.where(name).is(zs))), User.class);3.3.8 排序
Query query new Query();
query.with(Sort.by(Sort.Order.asc(id)));
ListUser users6 mongoTemplate.find(query, User.class);3.3.9 分页查询
Query pageQuery new Query();
//查询第一页数据每页展示两条数据
pageQuery.with(Sort.by(Sort.Order.desc(id))).skip(0).limit(2);
ListUser users7 mongoTemplate.find(pageQuery, User.class);3.3.10 查询总条数
long count mongoTemplate.count(new Query(), User.class);
System.out.println(总条数为 count);3.3.11 去重
ListString names mongoTemplate.findDistinct(new Query(), name, User.class, String.class);3.3.12 json字符串查询
BasicQuery basicQuery new BasicQuery({name:zs});
ListUser users8 mongoTemplate.find(basicQuery, User.class);3.4 修改文档
3.4.1 更新单条文档
Update update new Update();
update.set(salary,300000.0);
//更新符合条件的第一条数据
mongoTemplate.updateFirst(Query.query(Criteria.where(name).is(zs)),update,User.class);3.4.2 批量更新文档
Update update new Update();
update.set(salary,300000.0);
//将所有满足条件的文档都修改
mongoTemplate.updateMulti(Query.query(Criteria.where(name).is(zs)),update,User.class);3.4.3 修改或插入文档
Update update new Update();
update.set(id,6);
update.set(salary, 300000.0);
//没有符合条件的数据则插入数据
mongoTemplate.upsert(Query.query(Criteria.where(name).is(ls)),update,User.class);如果没有包含”ls“这条文档那么就会插入”ls“这条文档但是如果id重复那么就会抛出异常。
Update update new Update();
update.set(salary, 300000.0);//没有符合条件的数据则插入数据
UpdateResult upsert mongoTemplate.upsert(Query.query(Criteria.where(name).is(ww)), update, User.class);//获取本次修改记录条数
long modifiedCount upsert.getModifiedCount();
System.out.println(modifiedCount);
//获取本次匹配的记录条数
long matchedCount upsert.getMatchedCount();
System.out.println(matchedCount);
//当集合种没有对应的文档那么就插入文档获得插入文档自动生成的id
System.out.println(upsert.getUpsertedId());3.5 删除文档
3.5.1 删除所有文档
mongoTemplate.remove(new Query(),User.class);3.5.2 条件删除
mongoTemplate.remove(Query.query(Criteria.where(name).is(ls)),User.class);