springboot MongoTemplate 之Criteria+Query实现常见操作

时隔俩月再次前来更新,太忙了。这次把从年前持续到现在的一个项目用到的mongodb技术总结一下。陆陆续续遇到的坑和经验也放进来。

首先是技术选型上,我为啥选择使用mongodb,而不是mysql?

这个完全是看业务场景,业务场景会导致数据的特殊性。我负责的内容管理部分。主要是存储用户和内容的交互数据。数据量比较大,而且都是新增动作,没有修改。且每条数据的字段如果是mysql,会存在很多varchar长度超过200,text的字段。所以选择使用mongodb.

 

1.首先项目引入依赖

        <!--集成mongodb-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
            <version>2.2.6.RELEASE</version>
        </dependency>

2.然后配置文件加上连接mongodb的配置

spring: 
  data:
    mongodb:
      host: mongodb-server
      port: 27017
      database: content

3.在具体项目的类中注入MongoTemplate 

import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;


    @Autowired
    private MongoTemplate mongoTemplate;

4.封装实体类,其中Document的注解至关重要。这个影响查询时能不能查询到数据

import io.swagger.annotations.ApiModelProperty;
import org.springframework.data.mongodb.core.mapping.Document;

import java.io.Serializable;
import java.util.Date;
@Document(collection="homework_multimedia_detail")
public class HomeworkMultimediaDetailDocument implements Serializable {
    private static final long serialVersionUID = 865391169131304
Spring Boot与MongoTemplate可以用来操作GridFS。 GridFS是MongoDB的一种文件存储机制,它将大文件拆分成小的chunks并存储在MongoDB的集合中。GridFS适用于存储和检索大文件,比如音频、视频或者其他大型文件。 在Spring Boot中使用MongoTemplate操作GridFS需要进行以下步骤: 1. 首先,在`pom.xml`文件中添加MongoDB和Spring Data MongoDB的依赖。例如: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> ``` 2. 在Spring Boot的配置文件(`application.properties`或者`application.yml`)中配置MongoDB的连接信息,例如: ```properties spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydb ``` 3. 创建一个MongoTemplate bean,用于操作MongoDB。可以在Spring Boot的配置类中使用`@Bean`注解创建该bean,例如: ```java @Configuration public class MongoConfig { @Bean public MongoTemplate mongoTemplate(MongoDatabaseFactory mongoDbFactory, MongoMappingContext context) { return new MongoTemplate(mongoDbFactory, context); } } ``` 4. 使用MongoTemplate进行GridFS操作。例如,存储一个文件到GridFS: ```java @Autowired private MongoTemplate mongoTemplate; public void saveFileToGridFS(InputStream fileInputStream, String filename) { ObjectId fileId = mongoTemplate.store(fileInputStream, filename); // 可以根据需要进行一些操作,比如保存fileId到其他集合等 } ``` 5. 检索GridFS中的文件: ```java @Autowired private MongoTemplate mongoTemplate; public GridFSFile getFileFromGridFS(String filename) { Query query = Query.query(Criteria.where("filename").is(filename)); return mongoTemplate.findOne(query, GridFSFile.class); } ``` 上述代码只是一个简单的示例,你可以根据实际需求进行更复杂的操作。希望对你有所帮助!如果还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万米高空

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值