文章目录

  • 一、Java操作MongoDB
  • 二、使用步骤
    • 1.基础配置
    • 2.实体类
    • 3.MongoDB表数据
    • 3.增删改查聚合查询
  • 总结

一、Java操作MongoDB

上一篇文章介绍了,如何在本地使用MongoDB终端做一些基本的增删改查,以及一些递归查询,或者导入导出数据为excel的操作,那么今天我们来说说如何使用Java程序来操作MongoDB数据库,因为我们平时都是直接操作Java客户端的,而且项目都是采用分层的思想,dao层实现调用数据库的操作,所以关于一些数据库的基本的增删改查的操作都是在程序当中体现的。

那么具体如何实现呢,我们一一来讲解。

二、使用步骤

1.基础配置

建立一个springboot项目,导入依赖,依赖如下:
pom.xml

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency></dependencies>

application.yaml配置文件

spring:data:mongodb:database: test ##MongoDB中的数据库名称authentication-database: adminuri: mongodb://root:123456@localhost:27017  ##mongodb://用户名:密码@mongodb主机号:端口号
logging:level:org.springframework.data.mongodb.core: debug ##开启日志,这样进行了增删改查之后就可以看到具体的操作日志。

2.实体类

User.java

package com.lhh.qzdemo.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "user")
public class User {private int _id;private String creator;private String name;private int age;private Date createTime;private String Gender;private String cla;private String address;private String Province;private String Municipal;private String county;
}

accomplishment.java

本来类首字母应该大写的,但是因为我是写完了全部测试类才写博客的,所以就这样,不改啦,加上类上对应的属性名的大小写也不规范,这都是我自己的疏忽而导致的,因为在MongoDB当中属性名字就是参差不齐的,为了统一,一一对应,就只能将错就错啦!

package com.lhh.qzdemo.entity;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.mongodb.core.mapping.Document;import java.util.Date;@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(collection = "accomplishment")
public class accomplishment {private int _id;private String creator;private String name;private Date createTime;private int Type;private int studentNumber;private Date getBonusTime;private String BonusType;private String BonusDescription;
}

3.MongoDB表数据

在MongoDB当中,我只演示两张表,我把数据贴出来吧,感兴趣的朋友可以,手动批量插入数据,然后测试。

`user集合`
> db.user.find({})
{ "_id" : 3, "name" : "李四", "age" : 2, "Gender" : "男", "creator" : "C创建人" }
{ "_id" : 10, "name" : "", "age" : 18, "Gender" : "" }
{ "_id" : 100, "name" : "张二麻子", "age" : 19, "Gender" : "" }
{ "_id" : 1, "age" : 3, "name" : "大王" }
{ "_id" : 5, "age" : 12, "Province" : "江西省", "Municipal" : "抚州市", "County" : "黎川县" }
{ "_id" : 6, "age" : 14, "Province" : "江西省", "Municipal" : "抚州市", "County" : "乐安县" }
{ "_id" : 7, "age" : 14, "Province" : "江西省", "Municipal" : "抚州市", "County" : "临川" }
{ "_id" : 8, "age" : 14, "Province" : "江西省", "Municipal" : "南昌市", "County" : "青山湖区" }
{ "_id" : 9, "age" : 14, "Province" : "江西省", "Municipal" : "南昌市", "County" : "青云谱区" }
{ "_id" : 11, "age" : 4, "Province" : "江西省", "Municipal" : "南昌市", "County" : "经济开发区" }
{ "_id" : 12, "age" : 4, "Province" : "上海市", "Municipal" : "浦东新区", "County" : "北蔡" }
{ "_id" : 13, "age" : 4, "Province" : "上海市", "Municipal" : "浦东新区", "County" : "陈春路" }
`accomplishment集合`
> db.accomplishment.find({})
{ "_id" : 1, "creator" : "A", "name" : "李四", "createTime" : ISODate("2021-04-12T06:42:49.138Z"), "Type" : 2, "studentNumber" : 20, "getBonusTime" : ISODate("2021-04-12T06:42:49.138Z"), "BonusType" : "a", "BonusDescription" : "balabala" }
{ "_id" : 8, "name" : "宋明聪", "createTime" : ISODate("2021-04-13T09:23:05.271Z") }

3.增删改查聚合查询

为了方便,我就一次性把所有的逻辑全部贴出来哦~注释该有地方都有,只需要大家拿着这些数据去测试,即可进行验证。

package com.lhh.qzdemo;import com.lhh.qzdemo.entity.User;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.LookupOperation;
import org.springframework.data.mongodb.core.aggregation.ProjectionOperation;
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 java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;@SpringBootTest
class QzdemoApplicationTests {@Autowiredprivate MongoTemplate mongoTemplate;/** 遍历查看test数据库下的所有的集合* */@Testvoid contextLoads() {MongoCollection<Document> user1 = mongoTemplate.getCollection("user");//获取user集合中的所有数据Set<String> collectionNames = mongoTemplate.getCollectionNames();for (String co:collectionNames) {/*获取某个数据库下面的所有的集合,数据库在配置文件当中已定义*/System.out.println(co);}System.out.println(user1);}/** 查询所有* */@Testpublic void queryAll(){List<User> users = mongoTemplate.find(new Query(), User.class);for (User u:users) {System.out.println(u);}}/** 根据某些条件进行查询* */@Testpublic void queryBy(){List<User> users = mongoTemplate.find(new Query(Criteria.where("_id").is(3)), User.class);/*for (User u:users) {System.out.println(u);}*///查询年纪小于20岁的数据List<User> userList = mongoTemplate.find(new Query(Criteria.where("age").lt(20)), User.class);for (User u:userList) {System.out.println(u);}}/** 插入数据* */@Testpublic void insert(){User user = new User(26,"B创建人","miracle",1,new Date(),"女","三年二班","上海市浦东新区xxx","上海市xxx","上海市","浦东新区");//插入成功返回已经插入的对象User userInsert = mongoTemplate.insert(user);System.out.println(userInsert);}/** 删除_id=101的文档* */@Testpublic void delete(){//插入成功返回已经插入的对象DeleteResult result = mongoTemplate.remove(new Query(Criteria.where("_id").is(101)),User.class);System.out.println(result);}/** 修改_id为26的某个文档** */@Testpublic void update(){//插入成功返回已经插入的对象User user = new User(26,"C创建人","miracle",2,new Date(),"女","三年二班","上海市浦东新区xxx","上海市xxx","上海市","浦东新区");Update update = new Update();update.set("creator",user.getCreator());update.set("age",user.getAge());UpdateResult upsert = mongoTemplate.upsert(new Query(Criteria.where("_id").is(user.get_id())), update, User.class);System.out.println(upsert);}/** 关联查询** */@Testpublic void aggregate(){//定义LookupOperationLookupOperation lookupOperation = LookupOperation.newLookup().from("accomplishment").localField("_id").foreignField("_id").as("bieming");//定义ProjectOperationProjectionOperation projectionOperation = Aggregation.project("_id","creator","age","name").and("bieming.name").as("bieming2");//重新起一个别名/** 1.使用Aggregation关联上述两个对象(构造函数的入参数)* *///Aggregation aggregation = Aggregation.newAggregation(lookupOperation,projectionOperation);/** 2.把bieming2打散数组内部的那个嵌套数组,也就是只形成一个数组* *///Aggregation aggregation = Aggregation.newAggregation(lookupOperation,projectionOperation,Aggregation.unwind("bieming2"));//加了一个打散的操作/** 3.带单一条件的过滤查询* *///Criteria criteria = new Criteria().and("age").lte(10);//定义一个查询条件,把age小于20的过滤出来。//Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria),lookupOperation,projectionOperation,Aggregation.unwind("bieming2"));//加了一个打散的操作/** 4.多个过滤查询,可以无限加。* */Criteria criteria = new Criteria().and("age").lte(10);//定义一个查询条件,把age小于20的过滤出来。Criteria criteria2 = new Criteria().and("_id").gte(5);//定义一个查询条件,把age小于20的过滤出来。Aggregation aggregation = Aggregation.newAggregation(Aggregation.match(criteria),Aggregation.match(criteria2),lookupOperation,projectionOperation,Aggregation.unwind("bieming2"));//加了一个打散的操作List<Map> userList = mongoTemplate.aggregate(aggregation, "user", Map.class).getMappedResults();System.out.println(userList);}
}

总结

当然,会了这些最基本的,我想以后再业务代码当中,问题应该不大的。

看完恭喜你,又知道了一点点!
你知道的越多,不知道的越多!
感谢您的阅读,你的关注和评论,是对我学习的最大的支持,加油,陌生人,一起努力。

Java操作Mongodb数据(增删改查聚合查询)相关推荐

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

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

  2. C#操作Excel数据增删改查(转)

    C#操作Excel数据增删改查. 首先创建ExcelDB.xlsx文件,并添加两张工作表. 工作表1: UserInfo表,字段:UserId.UserName.Age.Address.CreateT ...

  3. sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾

    参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...

  4. MongoDB的增删改查操作

    前面介绍了MongoDB的基本概念与常见的操作,本文来重点分析下MongoDB的增删改查操作 文章目录 什么是"mongo" 新增操作 删除操作 更新操作 查询操作 Where语句 ...

  5. 对Android手机系统日历数据增删改查操作详解

    Android手机系统日历数据增删改查详解 前段时间需要开发提取手机系统的日历数据的功能,自己开始研究了一下,刚开始还是比较懵逼的,经过仔细研究还是能够完全贯通了. 如果不想细细研究,可以直接下载我的 ...

  6. MongoDB数据库增删改查基本使用

    MongoDB数据库增删改查基本使用 文章目录 MongoDB数据库增删改查基本使用 1.CRUD介绍 2.MongoDB数据库常用命令 3.MongoDB数据库显示命令 3.1.查询当前有多少个数据 ...

  7. mongodb android,Android编程连接MongoDB及增删改查等基本操作示例

    本文实例讲述了Android编程连接MongoDB及增删改查等基本操作.分享给大家供大家参考,具体如下: MongoDB简介 Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提 ...

  8. jdbc链接mysql按照id查询_使用jdbc连接并操作Oracle数据库(增删改查IDUS)

    使用jdbc连接并操作Oracle数据库(增删改查IDUS) [oracle@zaibei-db ~]$ sqlplus /nolog SQL*Plus: Release 11.2.0.4.0 Pro ...

  9. python mongodb_python实现mongodb的增删改查

    python实现mongodb的增删改查 环境: 192.168.122.1 python 192.168.122.11 mongodb 一.安装pip,python的管理工具 官网下载: pip-1 ...

最新文章

  1. 灾难恢复级别_防患于未然:灾难恢复全攻略,助你有效恢复业务数据
  2. 系统地学习JavaScript
  3. Java 解析URL
  4. dalvik虚拟机简单介绍
  5. C#Panel 控件的使用
  6. EntityFramework 6.x多个上下文迁移实现分布式事务
  7. 走出海量数据及访问量压力困境
  8. 深度 linux支持debian,基于Debian的Linux发行版安装深度音乐及其插件
  9. python怎么读_锋哥告诉你Python怎么读
  10. Java入门学习路线目录索引(持续更新中)
  11. 【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)
  12. Hadoop权威指南PDF分享
  13. 【chp3】代码调试-车万翔-自然语言处理:基于预训练模型的方法
  14. 凝思系统常用操作命令
  15. excel不同文件表格批量加表头vba_多个excel表格自动汇总|如何把两个文件表格用VBA从另一个EXCEL表格导入数据到这个表格中?...
  16. PS中级应用系列-徐鹏-专题视频课程
  17. JS模拟Form表单提交
  18. Jenkins linter
  19. algorithm头文件下的常用函数-学习笔记
  20. 【H5网游服务端】决战魔域H5一键即玩服务端+授权GM后台+外网教程

热门文章

  1. 【javaScript】探讨 监听input输入框的失去焦点事件与按钮点击事件执行的顺序问题
  2. python中where的用法_Python中where()函数的用法详解
  3. 学习资料pdf自动转换为tmp/txt文件
  4. idea配置和启动tomcat
  5. MySQL自增从头开始
  6. 最高1000万奖励!嘉善启动第八届“梦想中国·智汇嘉善”创新创业大赛
  7. 看完这篇Python操作PPT总结,从此使用Python玩转Office全家桶就没有压力了!
  8. phpcms适配php5.5,phpcms升级到v9.6,有三大重要改进
  9. Windows 10 Enterprise 2016 LTSB (x64) - DVD (Chinese-Simplified) 安装教程
  10. crypto php,php 模拟Crypto-JS加密解密