转载自:https://blog.csdn.net/sinat_35821285/article/details/83511203#commentBox

1.首先pom.xml

<!-- springboot 整合 mongodb   -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.0.0.RELEASE</version>
</dependency>

引入

@Autowired
private MongoTemplate mongoTemplate;

插入数据(可以是一个对象,或者是一个对象集合)

List<SysUser> userList = new ArrayList<>();
userList.add(new SysUser(11,"1","白小飞","18888888888"));
userList.add(new SysUser(9,"1","白敬亭","13333333333"));
userList.add(new SysUser(5,"1","林宥嘉","14444444444"));
userList.add(new SysUser(6,"1","彭于晏","15555555555"));
userList.add(new SysUser(7,"1","周杰伦","16666666666"));
mongoTemplate.insert(userList, "userList");
SysUser sysUser = new SysUser(12,"1","黄小飞","18888888888");
mongoTemplate.insert(sysUser, "userList");

当存入的第一个数据类型是SysUser,名字是userList的时候,第二个存入数据就必须是SysUser类型的数据。

查询数据

查询单个数据和多个数据,模糊查询

//查询单个数据
public SysUser findMongo() {
Pattern pattern = Pattern.compile("^.*8$",Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("phone").regex(pattern));
SysUser findOne = mongoTemplate.findOne(query,SysUser.class,"userList");
return findOne;
}
    //查询多个数据
public List<SysUser> findListMongo() {
//模糊查询以 ^开始 以$结束 .*相当于Mysql中的%
Pattern pattern = Pattern.compile("^1.*$",Pattern.CASE_INSENSITIVE);
Query query = new Query(Criteria.where("phone").regex(pattern));
// Query query = new Query(Criteria.where("status").is("1"));
// query.with(new Sort(Direction.DESC,"phone")); //按手机号码倒序
List<SysUser> findList = mongoTemplate.find(query,SysUser.class,"userList");
return findList;
}
//多个条件查询(格式2)
public List<SysUser> findList2(){
Criteria criteria = new Criteria();
criteria.and("name").is("秦岚");
criteria.and("phone").is("12222222222");
Query query = new Query(criteria);
List<SysUser> findList = mongoTemplate.find(query, SysUser.class,"userList");
return findList;
}
//一个模糊关键字匹配多个字段
public List<SysUser> findList3(){ Pattern pattern = Pattern.compile("^.*222$",Pattern.CASE_INSENSITIVE);
Criteria criteria = new Criteria();
//phone以222结尾的 或者 name以222结尾的
criteria.orOperator(Criteria.where("phone").regex(pattern),
Criteria.where("name").regex(pattern));
//同时满足 phone以222结尾的,和name以222结尾的
criteria.andOperator(Criteria.where("phone").regex(pattern),
Criteria.where("name").regex(pattern)); Query query = new Query(criteria);
List<SysUser> find = mongoTemplate.find(query, SysUser.class,"userList");
return find;
}

更新。

//更新
public int update() {
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(1)); //_id区分引号 "1"和1
Update update = Update.update("name", "zzzzz");
// WriteResult upsert = mongoTemplate.updateMulti(query, update, "userList"); //查询到的全部更新
// WriteResult upsert = mongoTemplate.updateFirst(query, update, "userList"); //查询更新第一条
WriteResult upsert = mongoTemplate.upsert(query, update, "userList"); //有则更新,没有则新增
return upsert.getN(); //返回执行的条数
}
//添加内嵌文档数据(有则直接加入,没有则进行新增)
public int update1() {
Query query = Query.query(Criteria.where("_id").is("11"));
SysUser user = new SysUser(1,"1","lisi","19999998745");
Update update = new Update();
update.addToSet("users", user);
WriteResult upsert = mongoTemplate.upsert(query, update, "userList");
return upsert.getN();
}
//修改内嵌文档中数据
public int update2() {
//查询_id为11并且其中userList文档的_id为1的
Query query = Query.query(Criteria.where("_id").is("11").and("users._id").is(1));
Update update = Update.update("users.$.name", "zhangsan");
WriteResult upsert = mongoTemplate.upsert(query, update, "userList");
return upsert.getN();
}
//删除内嵌文档中数据
public int delete() {
//查询_id为11并且其中userList文档的_id为1的
Query query = Query.query(Criteria.where("_id").is("11").and("users._id").is(1));
Update update = new Update();
update.unset("users.$");
WriteResult upsert = mongoTemplate.updateFirst(query, update, "userList");
return upsert.getN();
}

查询多个数据删除之后是这样的:

MongoTemplate进行增删改查的更多相关文章

  1. SpringBoot整合MongoDB JPA,测试MongoRepository与MongoTemplate用法,简单增删改查+高级聚合

    源码 地址 -> https://github.com/TaoPanfeng/case/tree/master/04-mongo/springboot-mongo 一 引入依赖 <depe ...

  2. Java连接MongoDB进行增删改查

    1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...

  3. springMVC操作mongoDB增删改查

    下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(n ...

  4. SpringBoot操作MongoDB实现增删改查

    本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...

  5. MongoDB学习-->命令行增删改查&JAVA驱动操作Mongodb

    MongoDB 是一个基于分布式文件存储的数据库. 由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关 ...

  6. 十四:SpringBoot-配置MongoDB数据库,实现增删改查逻辑

    SpringBoot-配置MongoDB数据库,实现增删改查逻辑 1.MongoDB数据库 1.1 MongoDB简介 1.2 MongoDB特点 2.SpringBoot整合MongoDB 2.1 ...

  7. Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示

    Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...

  8. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(9)-MVC与EasyUI结合增删改查

    系列目录 文章于2016-12-17日重写 在第八讲中,我们已经做到了怎么样分页.这一讲主要讲增删改查.第六讲的代码已经给出,里面包含了增删改,大家可以下载下来看下. 这讲主要是,制作漂亮的工具栏,虽 ...

随机推荐

  1. Pycharm安装模块提示module 'pip' has no attribute 'main'的问题

    解决pycharm问题:module 'pip' has no attribute 'main' 转自: <解决pycharm问题:module 'pip' has no attribute ' ...

  2. 关于Ubuntu下is not in the sudoers file解决方法

    当我在postgres用户下去执行sudo vim demo.sql需要用管理员权限运行时,并且输入本用户的密码,但是输入之后提示如下: postgers is not in the sudoers ...

  3. JAVA自定义查询策略

    此文章为个人笔记,考虑之后工作用到,博客方便于查找,如果可以给他人提供参考价值,那再好不过 1.定义查询接口参数 package com.qy.code.generator.query; import ...

  4. Hadoop 单机安装教程

    Hadoop 单机安装教程 本文原始地址:https://sitoi.cn/posts/24540.html 安装环境 Fedora 29 openjdk version "1.8.0_19 ...

  5. Linux服务器性能分析与优化

    影响服务器性能的因素: CPU :大部分cpu在同一时间只能运行一个线程,超线程的处理器可以在同一时间处理多个线程,因此可以利用超线程特性提高系统性能. 在linux系统下,只有运行SMP内核才能支持 ...

  6. git命令中的--是什么意思?

    转载自git命令中的--是什么意思? git命令中的--是什么意思? 看到个命令 git checkout -- files 不知道--代表什么.查了一下,--是linux的东西,用来标志命令项的结束 ...

  7. 大数据调度工具oozie详细介绍

    背景 之前项目中的sqoop等离线数据迁移job都是利用shell脚本通过crontab进行定时执行,这样实现的话比较简单,但是随着多个job复杂度的提升,无论是协调工作还是任务监控都变得麻烦,我们选 ...

  8. 2019牛客暑期多校训练营(第五场)B:generator 1 (10进制快速幂)

    题意:给定x0,x1,a,b,满足xi=a*xi-1+b*xi-2: 求xn,n<10^(10^6): 思路:10进制快速幂裸题.降幂来写好像也是可以的,但是循环节不是phi(mod),所以数学 ...

  9. js 对小数进行格式化(保留小数,去除小数后的0)

    // 如果去零时需要保留位数: (比如 19.520100 --> 19.52) parseFloat(Number(19.520100).toFixed(2)) // 如果只想去除小数点后多余 ...

  10. 洛谷 P1731 [NOI1999]生日蛋糕 题解

    每日一题 day53 打卡 Analysis 观察一个蛋糕的俯视图,上表面的面积其实就是最下面那一层的底面积,所以在第一次搜索的时候加入这个底面积,之后就只用考虑侧面积就好啦. 就是每次枚举r和h,如 ...