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学习 - 简单使用的更多相关文章

  1. MongoDB学习:(二)MongoDB简单使用

    MongoDB学习:(二)MongoDB简单使用 MongoDB使用: 执行mongodb的操作之前,我们需要运行命令,来进入操作命令界面 >mongo 提示该错误,说明我们系统缺少一个补丁,该 ...

  2. MongoDB 学习笔记(一):安装及简单shell操作

    一.说明 1.该系列MongoDB学习笔记的学习环境采用的MongoDB版本为mongodb-win32-i386-2.4.6,操作系统为win7. 二.安装 1.新建两个目录,分别是D:\Insta ...

  3. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  4. Mongodb学习笔记一(Mongodb环境配置)

    Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...

  5. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  6. MongoDB学习之--增删改查(1)

    本文是对mongodb学习的一点笔记,主要介绍最简单的增删改操作,初学,看着API,有什么错误,希望大家指正:(使用官方驱动) 1.增 增加操作是最简单的,构造bsonDcument插入即可: 方式1 ...

  7. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  8. MongoDB学习教程(1)

    1.简介: MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展的高性能数据 ...

  9. MongoDB学习总结(二)

    前言:学习札记! MongoDB学习总结(二) 1.  安装.初识 之前写过一篇MongoDB的快速上手文章,里边详细的讲了如何安装.启动MongoDB,这里就不再累述安装过程,简单介绍一下Mongo ...

随机推荐

  1. 【力扣】649. Dota2 参议院

    Dota2 的世界里有两个阵营:Radiant(天辉)和 Dire(夜魇) Dota2 参议院由来自两派的参议员组成.现在参议院希望对一个 Dota2 游戏里的改变作出决定.他们以一个基于轮为过程的投 ...

  2. pipeline 步骤

    目录 一.简介 二.文件相关 删除当前目录 切换到目录 判断文件是否存在 判断是否为类Unix 返回当前目录 将内容写入文件 读取文件内容 二.制品相关 存取临时文件 三.命令相关 script sh ...

  3. 效验pipeline语法

    目录 一.简介 二.配置 一.简介 因为jenkins pipeline不像JAVA之类的语言那样应用广泛,所以没有相关的代码检测插件. 2018年11月初,Jenkins官方博客介绍了一个VS Co ...

  4. 《转》谈谈基于Kerberos的Windows Network Authentication

    http://www.cnblogs.com/artech/archive/2007/07/05/807492.html 基本原理引入Key Distribution: KServer-Client从 ...

  5. CentOS7学习笔记(四) 常用命令记录

    查看命令的帮助信息 man 命令查看帮助信息 在想要获取帮助信息的命令前面加上man即可,例如查看ls命令的帮助信息 [root@localhost ~]# man ls help 命令查看帮助信息 ...

  6. 使用.NET 6开发TodoList应用(1)——系列背景

    前言 想到要写这样一个系列博客,初衷有两个:一是希望通过一个实践项目,将.NET 6 WebAPI开发的基础知识串联起来,帮助那些想要入门.NET 6服务端开发的朋友们快速上手,对使用.NET 6开发 ...

  7. LuoguP7534 [COCI2016-2017#4] Kartomat 题解

    Content 火车站里头有一个售票机,其键盘可以看作是一个 \(4\times 8\) 的矩阵,其中第一行的前面三个键和最后一行的最后三个键都是 *,剩余的键按照从上到下,从左到右的顺序依次按照 A ...

  8. LuoguB2078 含 k 个 3 的数 题解

    Content 给定一个数 \(n\),判断其数位中是否恰好有 \(k\) 个 \(3\). 数据范围:\(1<n\leqslant 10^{15}\),\(1<k\leqslant 15 ...

  9. CF1494A ABC String 题解

    Content 给定 \(T\) 个仅包含大写字母 A,B,C 的字符串 \(s\).问你是否能够通过将每个 A,B,C 换成 (,) 中的一个(同一个字母必须要换成同一个字符),使得最后得到的括号序 ...

  10. 介绍下Shell中的${}、##和%%使用范例,本文给出了不同情况下得到的结果。

    介绍下Shell中的${}.##和%%使用范例,本文给出了不同情况下得到的结果.假设定义了一个变量为:代码如下:file=/dir1/dir2/dir3/my.file.txt可以用${ }分别替换得 ...