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学习 - 简单使用的更多相关文章
- MongoDB学习:(二)MongoDB简单使用
MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...
- MongoDB 学习笔记(一):安装及简单shell操作
一.说明 1.该系列MongoDB学习笔记的学习环境采用的MongoDB版本为mongodb-win32-i386-2.4.6,操作系统为win7. 二.安装 1.新建两个目录,分别是D:\Insta ...
- MongoDB学习笔记—Linux下搭建MongoDB环境
1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- MongoDB学习之--增删改查(1)
本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习教程(1)
1.简介: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展的高性能数据 ...
- MongoDB学习总结(二)
前言:学习札记! MongoDB学习总结(二) 1. 安装.初识 之前写过一篇MongoDB的快速上手文章,里边详细的讲了如何安装.启动MongoDB,这里就不再累述安装过程,简单介绍一下Mongo ...
随机推荐
- table表格数据无缝循环滚动
分享一个好看的表格无缝滚动:(实战用起来很舒服) 直接copy代码到你的程序中: 1.HTML <div class="tablebox"> ...
- 【VSCode】检测到 #include 错误。请更新 includePath。已为此翻译单元(C:\mingw-w64\i686-8.1.0-posix-dwarf-rt_v6-rev0\mingw32\i686-
win+r 运行cmd 输入"gcc -v -E -x c -"获取mingw路径: 我的: #include "..." search starts here ...
- CF977C Less or Equal 题解
Content 给定一个 \(n\) 个数的数列 \(a_1,a_2,a_3,...,a_n\) 和一个数 \(k\),试找出这样的一个数 \(x\),使得数列中有 \(k\) 个数小于等于 \(x\ ...
- 除了背八股文,Java面试更该这样准备
我可以这样说,哪怕你背了再多java八股文的答案,过面试也能靠运气,因为很多java面试的答案只限于技术理论说辞.但用我本文给出的方法去准备面试,能在不提升技术的前提下,大大提升你java面试的通过率 ...
- SpringBoot整合Netty实现socket通讯简单demo
依赖 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifa ...
- win10修改Docker Desktop Installer的默认安装目录
Docker Desktop Installer软件默认安装会装在C:\Program Files\Docker的目录下,默认是不能修改的,但是我们可以通过设置软链接的方式把安装默认弄到其他盘 我们先 ...
- centos使用docker安装ActiveMQ
拉取镜像 docker pull webcenter/activemq 启动镜像 docker run --name=activemq -itd -p 8161:8161 -p 61616:61616 ...
- JAVA微信支付——微信公众号内支付 代码
官方文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 微信PC二维码支付方式参考:https://www.cnblogs. ...
- java判断一个字符串是否为数字(整型、int)
引入commons-lang 的jar包 /** * 判断是否是数字类型 * @param str * @return 如果为空返回false 匹配返回true */ public static bo ...
- 【LeetCode】1085. Sum of Digits in the Minimum Number 解题报告(C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 遍历 日期 题目地址:https://leetcode ...