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.hqwc.cn/news/614925.html

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

相关文章

mybiats-puls-插入测试以及雪花算法

一&#xff0c;测试 /* * 插入测试 * */ Test public void test01() {User user new User();/** 自动帮我们生成id* */user.setName("kuku");user.setAge(3);user.setEmail("2983394967qq.com");final int insert mapper.insert(user);System.out.print…

ES6基础(JavaScript基础)

本文用于检验学习效果&#xff0c;忘记知识就去文末的链接复习 1. ECMAScript介绍 ECMAScript是一种由Ecma国际&#xff08;前身为欧洲计算机制造商协会&#xff0c;英文名称是European Computer Manufacturers Association&#xff09;通过ECMA-262标准化的脚本程序设计语言…

基于SpringBoot的“汉服文化平台网站”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“汉服文化平台网站”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统功能界面图 用户登录、用…

推荐一款轻量级的hosts文件编辑器(免安装版)

在管理和编辑hosts文件时&#xff0c;一款简单而有效的工具是非常重要的。下面推荐一款免安装版的轻量级hosts文件编辑器&#xff0c;让你轻松管理你的hosts文件。 windows系统默认hosts文件位置 下载地址&#xff1a;https://www.alipan.com/s/8kSns9eAi9f

学习ArkTS -- 常用组件使用

学习ArkTS 使用Deveco studio写ArkTSImage: 图片显示组件1.声明Image组件并设置图片源2. 添加图片属性 Text: 文本显示组件1. 声明Text组件并设置文本内容2. 添加文本属性 TextInput&#xff1a;文本输入框1. 声明TextInput2. 添加属性和事件 Button 组件1. 声明Button组件&…

09 Php学习:超级全局变量

超级全局变量 PHP中预定义了几个超级全局变量&#xff08;superglobals&#xff09; &#xff0c;这意味着它们在一个脚本的全部作用域中都可用。 PHP 超级全局变量列表: $GLOBALS$_SERVER$_REQUEST$_POST$_GET$_FILES$_ENV$_COOKIE$_SESSION $GLOBALS $GLOBALS 是 PHP 中的…

微信ipad协议GO版本 最新不封号

支持A16&#xff0c;62数据号登录&#xff0c;长链接不掉线&#xff0c;稳定不封号。全新支持短信号登陆&#xff0c;并且支持扫码登录。可以获取小程序code、抢购、游戏试玩授权等功能。 以下是对登录和授权的一些方法&#xff1a; - getLoginQRCode (获取登录二维码) - Chec…

SpringCloud、SpringBoot、JDK版本对应关系

SpringCloud与SpringBoot 版本 官网说明&#xff1a;https://spring.io/projects/spring-cloud#overview SpringBoot 与 JDK版本关系 发布说明&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.0-Release-Notes SpringBoot 3.x不再支持JDK1.…

信号完整性之特性阻抗那些事儿

原文来自微信公众号&#xff1a;工程师看海&#xff0c;与我联系&#xff1a;chunhou0820 看海原创视频教程&#xff1a;《运放秘籍》 大家好&#xff0c;我是工程师看海。 我们经常说控制阻抗&#xff0c;这个阻抗是什么意思呢&#xff1f; 信号在传输线中&#xff0c;是一步…

基于opencv的视觉巡线实现

前言 这段时间在和学弟打软件杯的比赛&#xff0c;有项任务就是机器人的视觉巡线&#xff0c;这虽然不是什么稀奇的事情&#xff0c;但是对于一开始不了解视觉的我来说可以说是很懵了&#xff0c;所以现在就想着和大家分享一下&#xff0c;来看看是如何基于opencv来实现巡线的…

0.1 + 0.2 不等于 0.3 ?这是为什么?一篇讲清楚!!!

0.1 0.2 不等于 0.3 &#xff1f;这是为什么&#xff1f;一篇讲清楚&#xff01;&#xff01;&#xff01; 分类 编程技术 在很多编程语言中&#xff0c;我们都会发现一个奇怪的现象&#xff0c;就是计算 0.1 0.2&#xff0c;它得到的结果并不是 0.3&#xff0c;比如 C、C、…

高效保护,无粉乳胶手套助您安心工作

在快节奏的现代生活中&#xff0c;我们每天都在与各种细菌、污染物和化学品打交道&#xff0c;因此保护我们的身体健康变得愈发重要。特别是在工作环境中&#xff0c;手部是最容易受到伤害和污染的部位之一。为了提供最佳的保护&#xff0c;优斯特推出了一款高品质的无粉乳胶手…