一、什么是MongoDB

        MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。

        在高负载的情况下,添加更多的节点,可以保证服务器性能。

        MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。

        MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

{
    name:"张三",
    age:"18"
}

二、pom.xml

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

三、application.yml

spring:
  data:
    mongodb:
      host: 127.0.0.1(IP地址)
      port: 27017(端口)
      database: local(mongo的数据库名)
      auto-index-creation: true
      username: local(自定义账号)
      password: 123456(自定义密码)

四、MongoTemplate的基本方法

1.在service层注入MongoTemplate

@Resource
private MongoTemplate mongoTemplate;

2.查询接口

//在USER实体类中设置在mongo中的集合名
public static final String USER_COLLECTION = "USER_INFO";

//查询name=张三
Query query = Query.query(Criteria.where("name").is("张三"));
mongoTemplate.find(query,User.class);
mongoTemplate.find(query,User.class,User.USER_COLLECTION);

//查询所有
mongoTemplate.findAll(User.class);
mongoTemplate.findAll(User.class,User.USER_COLLECTION);

//分页查询 page页码,pageSize每页展示个数
Pageable pageable = PageRequest.of(page - 1, pageSize, Sort.by(Sort.Order.desc("createTime")));
Query query = new Query().with(pageable);
return mongoTemplate.find(query, User.class,User.USER_COLLECTION);

//查询多个
Query query= Query.query(Criteria.where("id").in("id1","id2","id3")).with(Sort.by(Sort.Order.desc("createTime")));
List<Publish> list= mongoTemplate.find(query, User.class);

//查询数量
Criteria criteria = Criteria.where("userId").is("1")
                .and("name").is(new ObjectId("张三"))
                .and("age").is("18");
Query query = Query.query(criteria);
long count = mongoTemplate.count(query, User.class);

3.插入接口

//在USER实体类中设置在mongo中的集合名
public static final String USER_COLLECTION = "USER_INFO";

User user= new User();//
user.setName("张三");
user.setAge("18");

//保存对象到mongodb
mongoTemplate.save(user);
mongoTemplate.insert(user);
//根据集合名称保存对象到mongodb
mongoTemplate.save(user,USER.USER_COLLECTION);
mongoTemplate.insert(user,USER.USER_COLLECTION);

List<User> list = new ArrayList<>();
list.add(user);

//根据集合名称保存list到mongodb
mongoTemplate.save(list,USER.USER_COLLECTION);
mongoTemplate.insert(list,USER.USER_COLLECTION);
mongoTemplate.insert(list,User.class);

4.更新接口

//在USER实体类中设置在mongo中的集合名
public static final String USER_COLLECTION = "USER_INFO";

User user = new User();
user.setId("619afb08ad3ba21a68aae808");
user.setName("张三");
user.setAge("18");

Query query = Query.query(Criteria.where("_id").is("619afb08ad3ba21a68aae808"));
Update update = Update.update("name","张三");

//更新一条数据
mongoTemplate.updateFirst(query, update, User.class);
mongoTemplate.updateFirst(query, update, USER.USER_COLLECTION);
mongoTemplate.updateFirst(query, update, USER.USER_COLLECTION);

//更新多条数据
mongoTemplate.updateMulti(query, update, User.class);
mongoTemplate.updateMulti(query, update, USER.USER_COLLECTION);
mongoTemplate.updateMulti(query, update, User.class, USER.USER_COLLECTION);

//更新数据,如果数据不存在就新增
mongoTemplate.upsert(query,update, User.class);
mongoTemplate.upsert(query,update, USER.USER_COLLECTION);
mongoTemplate.upsert(query,update, User.class, USER.USER_COLLECTION);

5.删除接口

//在USER实体类中设置在mongo中的集合名
public static final String USER_COLLECTION = "USER_INFO";

List<MongoDbJavaTest> list = new ArrayList<>();
User user= new User();
user.setId("619afb08ad3ba21a68aae808");
list.add(user);

Query query = Query.query(Criteria.where("_id").in("619afb08ad3ba21a68aae808","619afb08ad3ba21a68aae809"));

//根据条件删除
mongoTemplate.remove(query);
mongoTemplate.remove(user);
mongoTemplate.remove(User.class);

//根据条件删除(可删除多条)
mongoTemplate.remove(query,User.class,USER.USER_COLLECTION);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐