在SpringBoot项目中集成MongoDB后的一些基本操作。
本文介绍的内容是Springboot如何集成MongoDB,以及对MongoDB进行基本的增加、查询数据的操作。
提示:以下是本篇文章正文内容,下面案例可供参考
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前 NoSql 数据库中比较热门的一种。MongoDB 中的一条记录就是一个文档,与JSON类似。
代码如下(示例):
-
org.springframework.boot -
spring-boot-starter-data-mongodb
代码如下(示例):
spring.data.mongodb.uri=mongodb://127.0.0.1:27017/admin
- package com.hjxmongodb.mongdb.entity;
-
- import org.springframework.data.mongodb.core.mapping.Document;
-
- import lombok.Data;
-
- /**
- * 包名称:com.hjxmongodb.mongdb.entity
- * @version 创作时间:2023年11月6日上午11:16:04
- *
- */
- @Document
- @Data
- public class User {
-
- private String id;
-
- private String name;
-
- private int age;
-
- private String gender;
-
- private String email;
-
-
-
- }
- package com.hjxmongodb.mongdb.repository;
-
- import org.springframework.data.mongodb.repository.MongoRepository;
-
- import com.hjxmongodb.mongdb.entity.User;
-
- /**
- * 包名称:com.hjxmongodb.mongdb.repository
- * @version 创作时间:2023年11月9日上午10:16:06
- *
- */
-
- public interface UserRepository extends MongoRepository
{ -
- }
-
查询代码如下:
- package com.hjxmongodb.mongdb;
-
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
- import java.util.Optional;
- import java.util.Random;
- import java.util.UUID;
-
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.data.domain.Example;
- import org.springframework.data.domain.ExampleMatcher;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.data.domain.Pageable;
-
- import com.hjxmongodb.mongdb.entity.User;
- import com.hjxmongodb.mongdb.repository.UserRepository;
-
- /**
- * 包名称:com.hjxmongodb.mongdb
- * @version 创作时间:2023年11月9日上午10:58:19
- *
- */
-
- @SpringBootTest
- public class MongoRepositoryTest {
-
-
- @Autowired
- private UserRepository userRepository;
-
-
- /**
- * 批量增加数据
- * 使用MongoRepository 批量插入数据
- */
- @Test
- void createUsers() {
-
- Random random = new Random();
- Collection
userList = new ArrayList(); - for (int i = 0; i < 100000; i++) {
- User user = new User();
- user.setId(UUID.randomUUID().toString().replace("-", ""));
- user.setAge(random.nextInt(22, 50));
- user.setGender(random.nextInt(0, 2)+"");
- user.setName("hjx" + random.nextInt(10000));
- user.setEmail("hjx"+random.nextInt(10000)+"wm@163.com");
- userList.add(user);
- }
-
- System.out.println("批量插入数据:" + userList.size());
-
- userList = userRepository.insert(userList);
-
- System.out.println("保存成功 : " + userList.size());
-
- }
-
- @Test
- void findUser() {
- System.out.println("使用MongoRepository 来查询数据...");
-
- //查询所有的数据
- List
userList =userRepository.findAll(); - for (User user : userList) {
- System.out.println(user);
- }
-
- //根据ID查询单个数据
- Optional
user = userRepository.findById("f777728d4779450e81c30fcf2c38dfe0"); -
- System.out.println(user.get());
- }
-
- @Test
- void findByCondition() {
- System.out.println("根据条件配置来查询数据...");
-
- User user = new User();
- user.setAge(32);
-
- Example
example = Example.of(user); -
- List
tempUser =userRepository.findAll(example); -
- System.out.println(tempUser.size());
-
- }
-
- @Test
- void findByConditions() {
- System.out.println("根据条件模糊查询数据...");
- ExampleMatcher exampleMatcher = ExampleMatcher.matching().withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING).withIgnoreCase(true);
-
- User userExample = new User();
- userExample.setName("99");
- userExample.setAge(32);
- userExample.setGender("1");
-
- Example example = Example.of(userExample,exampleMatcher);
-
- List
resultList =userRepository.findAll(example); -
- System.out.println(resultList.size());
-
- }
-
- @Test
- void findByPages() {
- System.out.println("分页查询数据...");
-
- for (int i = 0; i < 10; i++) {
- Pageable pageable =PageRequest.of(i, 10);
-
- User userExample = new User();
- userExample.setAge(32);
-
- Example example = Example.of(userExample);
-
- Page
pages =userRepository.findAll(example, pageable); - System.out.println(pages.getContent());
- System.out.println(pages.getContent().size());
- System.out.println(pages.getNumber());
- System.out.println(pages.getSize());
- System.out.println("------------------------");
- }
-
- }
-
-
-
- }
-
全部代码如下:
- package com.hjxmongodb.mongdb;
-
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
- import java.util.Random;
- import java.util.UUID;
-
- import org.junit.jupiter.api.Test;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.mongodb.core.MongoTemplate;
- import org.springframework.data.mongodb.core.query.Criteria;
- import org.springframework.data.mongodb.core.query.Query;
- import org.springframework.data.mongodb.core.query.Update;
-
- import com.hjxmongodb.mongdb.entity.User;
- import com.mongodb.client.MongoCollection;
- import com.mongodb.client.result.DeleteResult;
- import com.mongodb.client.result.UpdateResult;
-
- /**
- * 包名称:com.hjxmongodb.mongdb
- * @version 创作时间:2023年11月9日上午10:09:09
- *
- */
-
- @SpringBootTest
- public class MongoTemplateTest {
-
- @Autowired
- private MongoTemplate mongoTemplate;
-
- static final String collectionName = "user";
-
- @Test
- void collectionExists() {
- System.out.println("创建集合,即数据库");
-
- // 判断是否已经存在该集合名称
- boolean collectionNameExists = mongoTemplate.collectionExists(collectionName);
- if (!collectionNameExists) {
- MongoCollection
document = mongoTemplate.createCollection(collectionName); - System.out.println(document.toString());
- } else {
- System.out.println(collectionName + " is exists.");
- }
-
- }
-
- @Test
- void create() {
- System.out.println("批量增加数据...");
- Random random = new Random();
- Collection
userList = new ArrayList(); - for (int i = 0; i < 100000; i++) {
- User user = new User();
- user.setId(UUID.randomUUID().toString().replace("-", ""));
- user.setAge(random.nextInt(22, 50));
- user.setGender(random.nextInt(0, 2) + "");
- user.setName("hjx" + random.nextInt(10000));
- user.setEmail("hjx" + random.nextInt(10000) + "wm@163.com");
- userList.add(user);
- }
-
- System.out.println("批量插入:" + userList.size() + "条数据。");
- List
t = (List) mongoTemplate.insert(userList, collectionName); - System.out.println("保存成功 : " + t.size());
-
- }
-
- @Test
- void findUser() {
- System.out.println("根据条件查找用户信息...");
- Query query = new Query();
- Criteria criteria = Criteria.where("age").gte(30); // 年龄等于30
- Criteria nameCriteria = Criteria.where("name").regex("99"); // 名称中包括99
-
- Criteria andCriteria = new Criteria();
- andCriteria.andOperator(criteria, nameCriteria);
-
- query.addCriteria(andCriteria);
-
- query.limit(400);
- List
userList = mongoTemplate.find(query, User.class, collectionName); - System.out.println(userList.size());
- userList.forEach(item -> System.out.println(item));
-
- }
-
- @Test
- void findAll() {
- System.out.println("分页按条件查询数据....");
-
- Query query = new Query();
-
- Criteria criteria = Criteria.where("age").gte(30); // 年龄大于等于30
- Criteria nameCriteria = Criteria.where("name").regex("99"); // 名称中包含有99
-
- Criteria andCriteria = new Criteria();
- andCriteria.andOperator(criteria, nameCriteria);
-
- query.addCriteria(andCriteria);
-
- for (int i = 0; i < 10; i++) {
-
- Pageable pageable = PageRequest.of(i, 10);//每页查询10条数据
- query.with(pageable);
-
- List
pages = mongoTemplate.find(query, User.class, collectionName); -
- System.out.println(pages.size());
- System.out.println(pages);
- System.out.println("------------------------");
- }
-
- }
-
- @Test
- void findallUser() {
- System.out.println("查询所有数据,循环输出....");
-
- List
user = mongoTemplate.findAll(User.class, collectionName); -
- // 第一种循环打印数据的方式:
- user.forEach(item -> System.out.println(item));
-
- // 第二种循环打印数据的方式:
- user.forEach(System.out::println);
- }
-
-
- @Test
- void update() {
- System.out.println("更新用户信息...");
- Criteria updateCriteria = Criteria.where("age").is(22);
-
- Update updateItem = new Update();
- updateItem.set("age", 32);
-
- UpdateResult result = mongoTemplate.updateMulti(new Query(updateCriteria), updateItem, User.class,
- collectionName);
-
- System.out.println(result.toString());
-
- }
-
- @Test
- void delete() {
- System.out.println("删除用户信息...");
- Criteria updateCriteria = Criteria.where("age").is(35);
-
- DeleteResult result = mongoTemplate.remove(new Query(updateCriteria), User.class, collectionName);
-
- System.out.println(result);
- }
-
- // @Test
- void deleteAll() {
- System.out.println("删除所有用户信息...");
-
- //方式1:删除所有数据
- // DeleteResult result = mongoTemplate.remove(new Query(), collectionName);
- // System.out.println(result);
-
- //方式2:删除所有数据,删除集合就可以了。
- mongoTemplate.dropCollection(collectionName);
-
-
-
- }
-
- }
以上就是在SpringBoot项目中集成MongoDB后的一些基本操作。本文简单介绍了MongoDB增加、查询、分页查询、删除数据等的操作,希望对伙伴们有一点点帮助。