一、SpringBoot和MongoDB簡介
SpringBoot是一個快速開發應用程序的框架,它基於Spring框架,旨在簡化Spring應用程序的配置和部署,同時提供更多的開箱即用的功能和插件。 MongoDB是一個NoSQL資料庫,其數據存儲格式是文檔式的,具有高可擴展性和靈活性。由於MongoDB的文檔式存儲,它比關係型資料庫具有更好的適應性和靈活性,因此能夠更好地適應快速變化的數據。
二、使用SpringBoot連接MongoDB
1、添加Spring Data MongoDB依賴項
org.springframework.boot
spring-boot-starter-data-mongodb
2、配置MongoDB連接
spring.data.mongodb.uri=mongodb://localhost:27017/test
3、編寫數據模型
@Document(collection="user")
public class User {
@Id
private String id;
private String name;
private String email;
// 省略getter和setter
}
4、編寫數據操作介面
public interface UserRepository extends MongoRepository<User, String> {
}
三、基本的數據操作
1、插入數據
@Autowired
private UserRepository userRepository;
public void insertUser() {
User user = new User();
user.setName("Tom");
user.setEmail("tom@example.com");
userRepository.save(user);
}
2、查詢數據
public void findUser(String id) {
User user = userRepository.findById(id).orElse(null);
}
3、更新數據
public void updateUser(String id, String name) {
User user = userRepository.findById(id).orElse(null);
if (user != null) {
user.setName(name);
userRepository.save(user);
}
}
4、刪除數據
public void deleteUser(String id) {
userRepository.deleteById(id);
}
四、高級查詢
1、按條件查詢
Query query = new Query(Criteria.where("name").is("Tom"));
List<User> userList = mongoTemplate.find(query, User.class);
2、按條件分頁查詢
int pageNum = 1;
int pageSize = 10;
Query query = new Query(Criteria.where("name").is("Tom")).skip((pageNum - 1) * pageSize).limit(pageSize);
List<User> userList = mongoTemplate.find(query, User.class);
3、按條件統計數量
Query query = new Query(Criteria.where("name").is("Tom"));
long count = mongoTemplate.count(query, User.class);
4、按條件排序
Query query = new Query(Criteria.where("name").is("Tom")).with(Sort.by(Sort.Order.desc("email")));
List<User> userList = mongoTemplate.find(query, User.class);
五、使用MongoTemplate進行複雜查詢
1、基於方法名稱自動實現查詢
public interface UserRepository extends MongoRepository<User, String> {
List<User> findByName(String name);
List<User> findByEmailLike(String email);
}
2、手動編寫查詢語句
Query query = new Query().addCriteria(Criteria.where("name").is("Tom").orOperator(Criteria.where("email").is("tom@example.com")));
List<User> userList = mongoTemplate.find(query, User.class);
六、使用MongoDB進行分頁查詢
1、使用MongoTemplate和Pageable進行分頁
int pageNum = 1;
int pageSize = 10;
Query query = new Query().with(PageRequest.of(pageNum - 1, pageSize));
List<User> userList = mongoTemplate.find(query, User.class);
2、使用MongoDB的skip和limit進行分頁
int pageNum = 1;
int pageSize = 10;
Query query = new Query().skip((pageNum - 1) * pageSize).limit(pageSize);
List<User> userList = mongoTemplate.find(query, User.class);
七、使用MongoDB進行數據管理
1、備份數據
mongodump --db [database_name] --out [backup_folder]
2、還原數據
mongorestore --db [database_name] [backup_folder]
3、優化資料庫性能
db.collection.ensureIndex({[field_name]:[index_type]})
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/307360.html