目錄
一、MongoDB 整合 SpringBoot
1.1、引入依賴
1.2、配置文件
1.3、集合操作
1.4、相關(guān)注解
1.5、文檔操作
1.5.1、查詢
1.5.2、更新
1.5.3、刪除
一、MongoDB 整合 SpringBoot
1.1、引入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
1.2、配置文件
spring:
data:
mongodb:
uri: mongodb://192.168.73.3:27017/demo
# mongodb 一般不設(shè)置密碼
# username: root
# password: 1111
uri 格式為: mongodb://ip 地址:mongodb 端口號/集合名
1.3、集合操作
Ps:以 demo 集合為例
a)創(chuàng)建集合
if(!mongoTemplate.collectionExists("demo")) {
//不存在才能創(chuàng)建,如果以及存在再創(chuàng)建就會報(bào)錯
mongoTemplate.createCollection("demo");
}
b)刪除集合
mongoTemplate.dropCollection("demo1");
1.4、相關(guān)注解
a)@Document
- 修飾范圍:在類上.
- 作用:映射當(dāng)前類的一個(gè)對象為 mongo 的一條文檔.
- 屬性:value 和 collection 都是用來表示操作的集合名.
b)@Id
- 修飾范圍:成員變量、方法.
- 作用:將值映射成文檔的 _id.
c)@Field
- 修飾范圍:成員變量、方法.
- 作用:將值映射為文檔中的一個(gè) key 名稱.
d)@Transient
- 修飾范圍:成員變量、方法.
- 租用:指定值不參與文檔序列化.
以 User 類為例:文章來源:http://www.zghlxwxcb.cn/news/detail-797749.html
@Document("demo") //表示當(dāng)前文檔屬于哪個(gè)集合
public class User {
@Id //當(dāng)前類的 id 映射文檔中的 _id
private Integer id;
private String name;
private Integer age;
@Field("work_day") //當(dāng)前類的 workDay 映射文檔中的 work_day
private Date workDay;
public User(Integer id, String name, Integer age, Date workDay) {
this.id = id;
this.name = name;
this.age = age;
this.workDay = workDay;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", workDay=" + workDay +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getWorkDay() {
return workDay;
}
public void setWorkDay(Date workDay) {
this.workDay = workDay;
}
}
1.5、文檔操作
1.5.1、查詢
//1.查詢所有
System.out.println("------------------------------------------------");
List<User> users = mongoTemplate.findAll(User.class);
users.forEach(System.out::println);
//2.根據(jù) id 查詢指定文檔
System.out.println("------------------------------------------------");
User byId = mongoTemplate.findById(1, User.class);
System.out.println(byId);
//3.根據(jù)查詢條件進(jìn)行查詢(參數(shù)1: 查詢條件, 參數(shù)2: 返回類型)
System.out.println("------------------------------------------------");
// mongoTemplate.find(new Query(), User.class); //沒有查詢條件就是查詢所有
//a) 等值查詢
System.out.println("------------------------------------------------");
List<User> users1 = mongoTemplate.find(Query.query(Criteria.where("name").is("周杰倫")), User.class);
users1.forEach(System.out::println);
//b) > 查詢: gt()、>= 查詢: gte() 、 < 查詢: lt()、<= 查詢 lte() 查詢
//以 > 為例
System.out.println("------------------------------------------------");
List<User> users2 = mongoTemplate.find(Query.query(Criteria.where("age").gt(30)), User.class);
users2.forEach(System.out::println);
//4.and 查詢
System.out.println("------------------------------------------------");
List<User> users3 = mongoTemplate.find(Query.query(Criteria.where("name").is("薛之謙").and("age").is(40)), User.class);
users3.forEach(System.out::println);
//5.or 查詢
System.out.println("------------------------------------------------");
Criteria criteria = new Criteria();
criteria.orOperator(
Criteria.where("name").is("周杰倫"),
Criteria.where("name").is("薛之謙")
);
List<User> users4 = mongoTemplate.find(Query.query(criteria), User.class);
users4.forEach(System.out::println);
//6.and 和 or
System.out.println("------------------------------------------------");
Criteria criteria1 = new Criteria();
criteria1.and("age").is(40)
.orOperator(
Criteria.where("name").is("周杰倫"),
Criteria.where("name").is("薛之謙")
);
List<User> users5 = mongoTemplate.find(Query.query(criteria1), User.class);
users5.forEach(System.out::println);
//7.sort
System.out.println("------------------------------------------------");
Query query = new Query();
query.with(Sort.by(Sort.Order.desc("age"))); //desc 降序, asc 升序
mongoTemplate.find(query, User.class);
//8.分頁: skip limit
System.out.println("------------------------------------------------");
Query queryPage = new Query();
queryPage.with(Sort.by(Sort.Order.desc("age"))) //desc 降序, asc 升序
.skip(0)
.limit(3);
mongoTemplate.find(queryPage, User.class);
//9.總數(shù)
System.out.println("------------------------------------------------");
mongoTemplate.count(new Query(), User.class);
//10.去重 distinct(參數(shù)1: 查詢條件, 參數(shù)2: 去重字段, 參數(shù)3: 操作集合, 參數(shù)4: 返回類型)
System.out.println("------------------------------------------------");
List<String> name = mongoTemplate.findDistinct(new Query(), "name", User.class, String.class);
//11.json 字符串查詢
System.out.println("------------------------------------------------");
Query queryJson = new BasicQuery("{name: '周杰倫', age: '20'}");
List<User> users6 = mongoTemplate.find(queryJson, User.class);
1.5.2、更新
//1.更新條件
Query query = Query.query(Criteria.where("name").is("周杰倫"));
//2.更新內(nèi)容
Update update = new Update();
update.set("age", 20);
//a) 更新單條
mongoTemplate.updateFirst(query, update, User.class);
//b) 更新多條
mongoTemplate.updateMulti(query, update, User.class);
//c) 不存在就插入(存在就更新第一條)
mongoTemplate.upsert(query, update, User.class);
1.5.3、刪除
//1.刪除所有
mongoTemplate.remove(new Query(), User.class);
//2.條件刪除
mongoTemplate.remove(Query.query(Criteria.where("name").is("林俊杰")), User.class);
文章來源地址http://www.zghlxwxcb.cn/news/detail-797749.html
到了這里,關(guān)于MongoDB - 整合 SpringBoot 操作全流程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!