本品文章只做學習使用;
安裝mongodb推薦博客:https://www.jianshu.com/p/a75e26e5f635
1:如何在外網環境下開放mongodb
服務器版本:centos7.6
(1) 保證mongodb的啟動配置文件中使用了bind_ip=0.0.0.0
(2) 保證服務器開放了27017端口
(3) 保證雲服務器的安全組中開放了27017
可參考我之前的博客:https://www.cnblogs.com/zgq7/p/11564860.html
自述:昨天我在學習的時候使用mongodb桌面工具robo 3T連接我的外網mongodb時可以穩定快速的連接,
但是在我的SpringBoot項目中卻一直連接超時,經過重復的實驗及思考后分析出了問題所在:
1:我的robo 3T 采用的是SSH連接,讓我一直以為mongodb處於外網開放狀態
2:我的雲服務器沒有開放27017端口
3:我的安全組也沒有開放27017端口
徹底開放之后可以在服務器上做一下測試:
如出現上圖則表示mongodb外網徹底放通了。
2:如何在SpringBoot中整合
我的版本:SpringBoot2.1.7+Java8+Mongodb 4.0
(1): springboot中的依賴

1 <dependencies> 2 <dependency> 3 <groupId>org.springframework.boot</groupId> 4 <artifactId>spring-boot-starter</artifactId> 5 </dependency> 6 7 <dependency> 8 <groupId>org.springframework.boot</groupId> 9 <artifactId>spring-boot-starter-web</artifactId> 10 </dependency> 11 12 <dependency> 13 <groupId>org.springframework.boot</groupId> 14 <artifactId>spring-boot-starter-data-mongodb</artifactId> 15 </dependency> 16 17 <dependency> 18 <groupId>org.springframework.boot</groupId> 19 <artifactId>spring-boot-starter-test</artifactId> 20 <scope>test</scope> 21 </dependency> 22 23 </dependencies>
(2): model
package com.boot.mongodb.model; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection = "test") public class UserModel { @Id private Object id; private String name; private Integer age; private String from; public UserModel() { } public UserModel(String name, Integer age) { this.name = name; this.age = age; } public UserModel(Object id, String name, String from) { this.id = id; this.name = name; this.from = from; } public UserModel(Integer id, String name, Integer age) { this.id = id; this.name = name; this.age = age; } public UserModel(Object id, String name, Integer age, String from) { this.id = id; this.name = name; this.age = age; this.from = from; } public Object getId() { return id; } public void setId(Object 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; } @Override public String toString() { return "UserModel{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", from='" + from + '\'' + '}'; } }
1:@Document(collection = "test") 代表該實體映射到該庫的test集合
2:@ID 指該字段映射到test集合的ID
(3): 作為持久化有兩種方式:
1:使用Repostory的方式
package com.boot.mongodb.repository; import com.boot.mongodb.model.UserModel; import org.springframework.data.mongodb.repository.MongoRepository; import org.springframework.stereotype.Repository; @Repository public interface UserRepository extends MongoRepository<UserModel, Integer> { }
增刪改查:
//==============================基於Repository的增刪改查 @Test public void add() { UserModel userModel = new UserModel(1, "lzq", 23, "Repository"); System.out.println(userRepository.insert(userModel)); } @Test public void remove() { UserModel userModel = new UserModel(1, "lzq", 23, "Repository"); userRepository.delete(userModel); } @Test public void update() { UserModel userModel = new UserModel(2, "lzq", 24, "Repository"); //有則修改,無則新增 System.out.println(userRepository.save(userModel)); } @Test public void find() { System.out.println(userRepository.findAll()); UserModel userModel = new UserModel(2, "lzq", 24, "Repository"); Example example = Example.of(userModel); System.out.println(userRepository.findOne(example)); System.out.println(userRepository.findAll(example)); }
2:使用MongoTemplate的方式,不用創建對應的Repostroy
增刪改查
//===============================基於MongoTemplate的增刪改查 @Test public void tadd() { UserModel userModel = new UserModel(3, "lzq", 24, "MongoTemplate"); logger.info("{}", mongoTemplate.insert(userModel)); } @Test public void tdelete() { //UserModel userModel = new UserModel(3, "lzq", 24, "MongoTemplate"); //輸出刪除的行數 //System.out.println(mongoTemplate.remove(userModel).getDeletedCount()); Query query = new Query(Criteria.where("id").is(3)); logger.info("{}", mongoTemplate.remove(query, UserModel.class).getDeletedCount()); } @Test public void tupdate() { Query query = new Query(Criteria.where("id").is(3)); Update update = new Update().set("name", "2333333"); logger.info("{}", mongoTemplate.updateFirst(query, update, UserModel.class)); } @Test public void tfind() { Query query = new Query(Criteria.where("id").is(3)); logger.info("{}", mongoTemplate.find(query, UserModel.class)); }
3:完整項目github地址:https://github.com/zgq7/boot_collections/tree/master/boot_mongodb
歡迎私聊互相學習。