MongoDB学习 - 简单使用
2021/8/27 19:06:21
本文主要是介绍MongoDB学习 - 简单使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.项目引入pom依赖
<!-- mongodb --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency>
2.配置连接
#mongodb配置
data:
mongodb:
host: 192.168.0.15
port: 27017
database: test
username: root
password: admindev123$%^
3.简单使用
新建一个实体类
MongodbMessage.class
package org.jeecg.common.mongodb; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; /** * @Description:消息记录 * @author:hanby * @date:Created in 2021/08/25 * @version V1.0 */ @Data @Document(collection = "MongodbMessage")//对应数据库的表名 public class MongodbMessage { /** * 主键 */ @ApiModelProperty(value = "主键") private java.lang.String id; /** * 发送人 */ @ApiModelProperty(value = "发送人") private java.lang.String from; /** * 接收人 */ @ApiModelProperty(value = "接收人") private java.lang.String to; /** * 信息详情 */ @ApiModelProperty(value = "信息详情") private java.lang.String message; /** * 发送时间 */ @ApiModelProperty(value = "发送时间") private Date datetime; /** * 组Id */ @ApiModelProperty(value = "组Id") private java.lang.String uid; }
/** * 直接注入mongoTemplate即可使用 */ @Resource private MongoTemplate mongoTemplate;
JeecgTestMongodbController.class
package org.jeecg.modules.cloud.mongodb; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.jeecg.common.api.vo.Result; import org.jeecg.common.mongodb.MongodbMessage; import org.jetbrains.annotations.NotNull; import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; 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 org.springframework.stereotype.Repository; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.*; @RestController @RequestMapping("/sys/mongodbtest") @Api(tags = "【微服务】单元测试") @Repository("deviceStatusRepository") public class JeecgTestMongodbController { /** * 直接注入mongoTemplate即可使用 */ @Resource private MongoTemplate mongoTemplate; @PostMapping("saveMongodb") @ApiOperation(value = "测试saveMongodb", notes = "测试saveMongodb") public Result<String> saveMongodb() { MongodbMessage message = new MongodbMessage(); message.setFrom("1"); message.setTo("2"); message.setMessage("第一个消息"); message.setDatetime(new Date()); message.setUid("111"); //存储操作 mongoTemplate.save(message); //存储多个 // ArrayList<MongodbMessage> messageList = new ArrayList<>(); // // MongodbMessage message1 = new MongodbMessage(); // message1.setFrom("1"); // message1.setTo("2"); // message1.setMessage("第一个消息"); // message1.setDatetime(new Date()); // message1.setUid("111"); // messageList.add(message1); // // MongodbMessage message2 = new MongodbMessage(); // message2.setFrom("1"); // message2.setTo("2"); // message2.setMessage("第二个消息"); // message2.setDatetime(new Date()); // message2.setUid("111"); // messageList.add(message2); // mongoTemplate.save(messageList); return Result.OK("mongodb保存成功"); } @PostMapping("deleteMongodb") @ApiOperation(value = "测试deleteMongodb", notes = "测试deleteMongodb") public Result<String> deleteMongodb(@RequestParam(name = "from", required = true) String from) { //mongoTemplate.remove("1"); //mongoTemplate.remove("1","MongodbMessage"); //构建查询 Query query = new Query(); //拼装删除数据 query.addCriteria(Criteria.where("from").is(from)); //mongoTemplate.remove(query, "记录表");//删除所有 mongoTemplate.remove(query, MongodbMessage.class); return Result.OK("mongodb删除成功"); } @PostMapping("editMongodb") @ApiOperation(value = "测试editMongodb", notes = "测试editMongodb") public Result<String> editMongodb(@RequestParam(name = "from", required = true) String from, @RequestParam(name = "message", required = true) String message) { //拼装修改数据 //Query query = new Query(Criteria.where("from").is(from)); Update update = new Update(); update.set("message", message); //mongoTemplate.updateFirst(query, update, MongodbMessage.class); //批量修改 Query query = new Query(Criteria.where("from").is(from)); mongoTemplate.updateMulti(query, update, MongodbMessage.class); return Result.OK("mongodb修改成功"); } @PostMapping("queryMongodb") @ApiOperation(value = "测试queryMongodb", notes = "测试queryMongodb") public Result<?> 测试queryMongodb(@RequestParam(name = "from", required = true) String from, @RequestParam(name = "to", required = true) String to, @RequestParam(name = "page", required = true) int page, @RequestParam(name = "size", required = true) int size) { //单条 //String id = "1"; //Query query = new Query(Criteria.where("id").is(id));//可累加条件 is是条件查,regex是模糊查 //Message message = mongoTemplate.findOne(query,Message.class); //多条 比如查询来自from发给to的记录 /** * mongoDB大于小于符号对应: * > 大于 $gt * < 小于 $lt * >= 大于等于 $gte * <= 小于等于 $lte * 要查询同一个字段多个约束需要用andOperator: */ Query query2 = new Query(Criteria.where("from").is(from) // //可累加条件 用and .and("to").is(to) // .andOperator( // //大于这个时间 // Criteria.where("datetime").gt(new Date()), // //小于这个时间 // Criteria.where("datetime").lt(new Date()) // ) // ) //排序 .with(Sort.by(Sort.Order.asc("datetime"))) ; long count = mongoTemplate.count(query2, MongodbMessage.class); System.out.println(count); //分页 List<MongodbMessage> messages = mongoTemplate.find(query2.limit(size).skip((page - 1) * size), MongodbMessage.class); HashMap<String, Object> hashMap = new HashMap<>(2); hashMap.put("count", count); hashMap.put("messages", messages); return Result.OK(hashMap); } }
这篇关于MongoDB学习 - 简单使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26go.mod的文件内容是什么?-icode9专业技术文章分享
- 2024-11-23MongoDB身份认证机制揭秘!
- 2024-11-20MongoDB教程:从入门到实践详解
- 2024-11-17执行 Google Ads API 查询后返回的是空数组什么原因?-icode9专业技术文章分享
- 2024-11-17google广告数据不同经理账户下的凭证可以获取对方的api数据吗?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼