MongoDB的安装和使用

1.MongoDB 安装

1.1 基于Docker安装

docker run --restart=always -d --name mongo -v /opt/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6

1.2 客户端工具使用

MongoDB Compass | MongoDB

2.MongoDB 使用

2.1 引用依赖包

  <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency>

2.2 配置文件配置mongodb资料

# MongoDB连接信息
spring.data.mongodb.host = 192.168.23.27
spring.data.mongodb.port = 27017
spring.data.mongodb.database = mallspring.data.mongodb.auto-index-creation = true

2.3 准备对象Person

@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Document(collection = "205_person")
//用于指定集合,如果不指定则会默认集合为当前类名
public class Person {// @Id //用于指定Id,若有该字段,则mongodb默认为model中的id为MongoDB中的idprivate  Integer id ;private  String name;private  Integer age;private  String phone;@Indexed(expireAfterSeconds = 10) //必须结合spring.data.mongodb.auto-index-creation = true和@Document注解一起使用private LocalDateTime creatTime;
}

2.4新增文档

package com.by;import cn.hutool.core.date.LocalDateTimeUtil;
import com.by.model.Person;
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 java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;@SpringBootTest
class InsertTests {@Autowiredprivate MongoTemplate mongoTemplate;@Testvoid test() {Person person = Person.builder().id(1).name("张").age(18).phone("188744456223").build();mongoTemplate.insert(person);}@Test//指定集合名称进行插入205_personvoid test2() {Person person = Person.builder().id(2).name("张").age(18).phone("188744456223").build();mongoTemplate.insert(person,"205_person");}@Test//指定集合名称进行插入205_personvoid test3() {Person person = Person.builder().id(3).name("张").age(18).phone("188744456223").build();mongoTemplate.insert(person,"205_person");}@Testvoid test4() {Person person = Person.builder().id(2).name("张").age(18).phone("188744456223").build();mongoTemplate.save(person,"205_person");}@Test //批量插入void test5() {List<Person> list =new ArrayList<>();for (int i = 1; i <= 10; i++) {Person person = Person.builder().id(i).name("张"+i).age(i).phone("188744456223").build();list.add(person);}mongoTemplate.insertAll(list);}@Test //测试索引的过期时间void test6() {//   Person person = Person.builder().id(11).name("张").age(38).phone("188744456223").creatTime(LocalDateTime.now()).build();//   mongoTemplate.save(person);}@Test //测试索引的过期时间void test8() {//  Person person = Person.builder().id(112).name("张").age(38).phone("188744456223").creatTime(LocalDateTime.now()).build();//  mongoTemplate.insert(person);}@Test //使用save命令void test7() {Person person = Person.builder().id(1).name("张--大爷").age(38).phone("188744456223").build();mongoTemplate.save(person,"person");}}

2.5修改文档

package com.by;import cn.hutool.core.date.LocalDateTimeUtil;
import com.by.model.Person;
import com.mongodb.client.result.UpdateResult;
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.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;@SpringBootTest
class UpdateTests {@Autowiredprivate MongoTemplate mongoTemplate;@Test //更新满足条件的第一条数据void test() {Query query =new Query(Criteria.where("id").is(1));Update update=new Update().set("age",38);mongoTemplate.updateFirst(query,update,Person.class);}@Test //批量更新年龄大于10的void test2() {Query query =new Query(Criteria.where("age").gte(10));Update update=new Update().set("age",38);mongoTemplate.updateMulti(query,update,Person.class);}@Test //使用正则表达式修改姓张的年龄void test3() {Query query =new Query(Criteria.where("name").regex("^张"));Update update=new Update().set("age",48);UpdateResult updateResult = mongoTemplate.updateMulti(query, update, Person.class);}}

2.6删除文档

package com.by;import com.by.model.Person;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
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.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;@SpringBootTest
class DeleteTests {@Autowiredprivate MongoTemplate mongoTemplate;@Test //删除满足条件的第一条数据void test() {Query query =new Query(Criteria.where("id").is(2));DeleteResult remove = mongoTemplate.remove(query,Person.class);}@Test //删除满足条件的第一条数据void test2() {Query query =new Query(Criteria.where("name").regex("3$"));DeleteResult remove = mongoTemplate.remove(query,Person.class);}@Test //删除满足条件的第一条数据void test3() {Query query =new Query(Criteria.where("id").in(4,5,6));DeleteResult remove = mongoTemplate.remove(query,Person.class);}@Test //删除满足条件的数据void test4() {Query query =new Query(Criteria.where("id").in(7,8,9));DeleteResult remove = mongoTemplate.remove(query,Person.class,"205_person");}@Test //删除满足条件的数据void test5() {Query query =new Query(Criteria.where("name").regex("^张"));DeleteResult remove = mongoTemplate.remove(query,Person.class,"205_person");}}

2.7查询文档

package com.by;import com.by.model.Person;
import com.mongodb.client.result.UpdateResult;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
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 java.util.List;@SpringBootTest
class SelectTests {@Autowiredprivate MongoTemplate mongoTemplate;@Test //查询所有数据void test() {List<Person> all = mongoTemplate.findAll(Person.class);}@Test //查询指定数据void test2() {Query query =new Query(Criteria.where("name").is("张3"));List<Person> list = mongoTemplate.find(query, Person.class);}@Test //查询所有数据void test3() {Query query =new Query(Criteria.where("name").is("张3"));List<Person> list = mongoTemplate.find(query, Person.class,"205_person");}@Test //查询所有数据void test4() {Query query =new Query(Criteria.where("name").is("张3"));List<Person> allAndRemove = mongoTemplate.findAllAndRemove(query, Person.class);}@Test //查询所有数据void test5() {Query query =new Query(Criteria.where("age").gte(2).lte(5));List<Person> list = mongoTemplate.find(query, Person.class);}@Test //用and关联多个查询条件void test6() {Criteria name =new Criteria("name").regex("^张");Criteria age  = new Criteria("age").gte(5);//创建条件对象,用and 进行关联Criteria criteria =new Criteria().andOperator(name,age);Query query=new Query(criteria);List<Person> list = mongoTemplate.find(query, Person.class);}@Test //用or关联多个查询条件void test7() {Criteria name =new Criteria("name").regex("^张");Criteria age  = new Criteria("age").gte(5);//创建条件对象,用and 进行关联Criteria criteria =new Criteria().orOperator(name,age);Query query=new Query(criteria);List<Person> list = mongoTemplate.find(query, Person.class);}@Test //用in关联多个查询条件void test8() {Query query=new Query(Criteria.where("age").in(4,5,6));List<Person> list = mongoTemplate.find(query, Person.class);}@Test //使用正则表达式void test9() {Query query=new Query(Criteria.where("name").regex("7$"));List<Person> list = mongoTemplate.find(query, Person.class);}@Test //区间查询void test10() {Query query=new Query(Criteria.where("age").gte(5).lte(8));List<Person> list = mongoTemplate.find(query, Person.class);}@Test //降序排序void test11() {Query query=new Query(Criteria.where("age").gte(5).lte(8)).with(Sort.by(Sort.Order.desc("age")));List<Person> list = mongoTemplate.find(query, Person.class);}@Test //降序排序void test12() {Query query =new Query( Criteria.where("age").gte(5).lte(8)).with(Sort.by(Sort.Order.asc("age")));List<Person> list = mongoTemplate.find(query, Person.class);}}

2.8创建索引

package com.by;import com.by.model.Person;
import com.mongodb.client.ListIndexesIterable;
import com.mongodb.client.model.Indexes;
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.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;@SpringBootTest
class IndexTests {@Autowiredprivate MongoTemplate mongoTemplate;@Test //更新满足条件的第一条数据void test() {//创建升序索引String index = mongoTemplate.getCollection("205_person").createIndex(Indexes.ascending("name"));//创建降序索引String name = mongoTemplate.getCollection("205_person").createIndex(Indexes.descending("name"));}@Test //删除索引void test2() {mongoTemplate.getCollection("205_person").dropIndex("name_-1");}@Test //查看所有索引void test3() {ListIndexesIterable<Document> documents = mongoTemplate.getCollection("205_person").listIndexes();for (Document document :documents) {System.out.println("索引列表"+document);}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/306389.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YOLOV5 分类:利用yolov5进行图像分类

1、前言 之前介绍了yolov5的目标检测示例,这次将介绍yolov5的分类展示 目标检测:YOLOv5 项目:训练代码和参数详细介绍(train)_yolov5训练代码的详解-CSDN博客 yolov5和其他网络的性能对比 yolov5分类的代码部分在这 2、数据集准备 yolov5分类的数据集就是常规的摆放方式…

TypeScript 中文错误消息

TypeScript 本身支持多语言显示错误消息&#xff0c;默认会追随操作系统或开发工具选择一个显示错误消息的语言。如果我们想强制让其显示某种语言可以如下设置&#xff0c;例如强制显示中文 命令行输入如下 npx tsc --locale zh-CN 对于 vsCode 中的错误消息可如下设置 设置…

[C++][算法基础]模拟散列表(哈希表)

维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b;Q x&#xff0c;询问整数 x 是否在集合中出现过&#xff1b; 现在要进行 N 次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&#xff0c;…

macU盘在电脑上读不出来 u盘mac读不出来怎么办 macu盘不能写入 Tuxera NTFS for Mac免费下载

对于Mac用户来说&#xff0c;使用U盘是很常见的操作&#xff0c;但有时候可能会遇到Mac电脑无法读取U盘的情况&#xff0c;这时候就需要使用一些特定的工具软件来帮助我们解决问题。本文就来告诉大家macU盘在电脑上读不出来是怎么回事&#xff0c;u盘mac读不出来怎么办。 一、m…

结构型模式--2.桥接模式【大海贼时代】

1. 组建海贼团 哥尔D罗杰是罗杰海贼团船长。他最终征服了伟大航路&#xff0c;完成了伟大航路的航行&#xff0c;被人们成为海贼王。后来得了绝症&#xff0c;得知自己命不久矣&#xff0c;主动自首并在东海罗格镇被处刑。临死前罗杰的一句话“想要我的宝藏吗&#xff1f;想要…

期货量化交易软件:MQL5 中的范畴论 (第 15 部分)函子与图论

概述 在上一篇文章中&#xff0c;我们目睹了前期文章中涵盖的概念&#xff08;如线性序&#xff09;如何视作范畴&#xff0c;以及为什么它们的“态射”在与其它范畴相关时即构成函子。在本文中&#xff0c;我们赫兹量化软件将阐述来自前期文章中的概括&#xff0c;即通过查看…

【示例】MySQL-SQL语句优化

前言 本文主要讲述不同SQL语句的优化策略。 SQL | DML语句 insert语句 插入数据的时候&#xff0c;改为批量插入 插入数据的时候&#xff0c;按照主键顺序插入 大批量插入数据的时候&#xff08;百万&#xff09;&#xff0c;用load指令&#xff0c;从本地文件载入&#x…

实现鼠标在页面点击出现焦点及大十字星

近段时间&#xff0c;在完成项目进度情况显示时候&#xff0c;用户在操作鼠标时候&#xff0c;显示当鼠标所在位置对应时间如下图所示 代码实现步骤如下&#xff1a; 1.首先引用 jquery.1.7.js 2.再次引用raphael.js 3.然后引用graphics.js 4.最后引用mfocus.js 其中mfocu…

【UE Niagara】让粒子发出声音

步骤 首先新建一个Niagara发射器&#xff0c;使用Empty模板。打开后先添加一个“Spawn Burst Instantaneous”模块&#xff0c;设置发射数量为3 可以添加一个“Shape Location”使得每个粒子的初始位置不同 添加一个“Play Audio”模块&#xff0c;然后设置一个播放的音效 对N…

一个比 Celery 轻量好用的异步任务工具

文章目录 1、RQ安装2、RQ基本概念2.1、Queue2.2、Job2.3、Worker 3、RQ 高级用法3.1、自定义任务失败处理3.2、任务依赖关系3.3、定时任务 4、RQ web 界面5、查看任务结果6、RQ 与 celery 对比7、总结 Python RQ&#xff08;Redis Queue&#xff09;是一个轻量级的异步任务队列…

电脑文件名乱码,数据恢复有高招!

在日常使用电脑的过程中&#xff0c;突然遭遇文件名乱码的情况&#xff0c;确实让人头疼不已。原本井井有条的文件目录&#xff0c;一下子变得杂乱无章&#xff0c;文件名变成了一堆无意义的乱码字符。这种情况不仅影响了文件的正常使用&#xff0c;还可能导致重要数据的丢失。…

当努力成为日常,你准备好“戒瘾”了吗

不知道从什么时候开始&#xff0c;我们的朋友圈里充斥着各种“努力打卡”、“奋斗不息”的标语。大家仿佛一夜之间都变成了“卷王”&#xff0c;不是在努力就是在努力的路上…… 卷王争霸 努力成瘾的序幕 在每个看似充满正能量的背后&#xff0c;却隐藏着一个不容忽视的现象—…

java快速构建飞书API消息推送、消息加急等功能

文章目录 飞书机器人自定义机器人自定义应用机器人 自定义应用发送消息普通文本 text富文本 post图片 image文件 file语音 audio视频 media消息卡片 interactive分享群名片 share_chat分享个人名片 share_user 批量发送消息消息加急发送应用内加急发送短信加急 发送电话加急spr…

论文复现:nn.L1Loss()

nn.L1Loss() 是 PyTorch 中的一个损失函数&#xff0c;属于 torch.nn 模块的一部分。它计算预测值和真实值之间差的绝对值的平均值&#xff0c;也就是 L1 距离&#xff08;或曼哈顿距离&#xff09;。这个损失函数常用于回归任务&#xff0c;特别是当你希望减少异常值对总体损失…

核心api实操-Activiti7从入门到专家(5)

背景 上一节已经搭建了&#xff0c;具体的开发环境&#xff0c;数据库&#xff0c;并且找了一个可以用bpmnjs流程设计器&#xff0c;这一些&#xff0c;我们对核心api做个基础的实操&#xff0c;有个感性的认知&#xff0c;另外对数据库和基本数据流动有个理解。 部署 模板部…

深度学习pytorch实战第P2周:CIFAR10彩色图片识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊](https://mtyjkh.blog.csdn.net/)** 零、引言&#xff08;温故而知新&#xff…

智能合约平台开发指南

随着区块链技术的普及&#xff0c;智能合约平台已经成为了这个领域的一个重要趋势。智能合约可以自动化执行合同条款&#xff0c;大大减少了执行和监督合同条款所需的成本和时间。那么&#xff0c;如何开发一个智能合约平台呢&#xff1f;以下是一些关键步骤。 一、选择合适的区…

MySQL学习笔记2——基础操作

基础操作 一、增删改查1、添加数据2、删除数据3、修改数据4、查询语句 二、主键三、外键和连接1、外键2、连接 一、增删改查 1、添加数据 INSERT INTO 表名[(字段名[,字段名]…)] VALUES (值的列表); --[]表示里面的内容可选添加数据分为插入数据记录和插入查询结果 插入数据…

AI+BI,欢迎数据分析进入大模型时代

过去一年大模型应用集中爆发&#xff0c;中关村科金作为领先的对话式AI技术解决方案提供商&#xff0c;基于各个行业真实的业务痛点&#xff0c;围绕营销、服务与运营场景&#xff0c;创新打造和升级了知识助手、投顾助手、智能陪练等大模型应用&#xff0c;全面赋能客户经理展…

【INNODB引擎篇】深奥探究Innodb存储引擎

&#x1f525;作者主页&#xff1a;小林同学的学习笔录 &#x1f525;mysql专栏&#xff1a;小林同学的专栏 目录 1.InnoDB引擎 1.1 逻辑存储结构 1.2 架构 1.2.1 概述 1.2.2 内存结构 1.2.3 磁盘结构 1.2.4 后台线程 1.3 事务原理 1.3.1 事务基础 1.3.2 redo log 1.…