【MongoDB】MongoDB分布式文件存储的数据库

MongoDB数据库之基于分布式文件存储 MongoDB简介 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。 公司发展 2016年6月,开源数据库MongoDB背后的同名公司在今天宣布,正式推出自己的第三大创收性服务Altas。.. 阅读详情

一、数据库简介

1、数据库

  • 数据库是按照数据结构来组织、存储和管理数据的仓库;
  • 我们的程序都是在内存中运行的,一旦程序运行结束或者计算机断电,程序运行中的数据都会丢失;
  • 所以我们就需要将一些程序运行的数据持久化到硬盘中,以确保数据的安全性,而数据库就是数据持久化的最佳选择;
  • 数据库就是存储数据的仓库;

2、数据库分类

数据库主要分为两种:关系型数据库、非关系型数据库

(1)关系型数据库

  • MySQL、Oracle、DB2、SQL Server …
  • 关系数据库中全都是表

(2)非关系型数据库

  • MongoDB、Redis …
  • 键值对数据库
  • 文档数据库MongoDB

3、MongoDB简介

  • MongoDB是为了快速开发互联网web应用而设计的数据库系统;
  • MongoDB是设计目标是极简、灵活、作为web应用栈的一部分;
  • MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB的这个数据库中存的是各种各样的JSON(BSON:二进制JSON);

4、三个概念

  • 数据库:数据库是一个仓库,在仓库中可以存放集合;
  • 集合:集合类似于数组,在集合中可以存放文档;
  • 文档:文档数据库中的最小单位,我们存储和操作的内容都是文档;

5、MongoDB下载安装

环境变量添加: 你的MongoDB的bin目录的路径添加到path中即可。

cmd测试:
在这里插入图片描述
网页测试:
在这里插入图片描述

5、相关命令

  • mongod 用来启动服务器
  • mongo 用来启动客户端

二、数据库操作

1、userRepository 和 mongoTemplate

userRepository 和 mongoTemplate 都是 Spring Data MongoDB 提供的访问 MongoDB 数据库的方式,但是它们的使用方式和适用场合有所不同。

userRepository 是 Spring Data MongoDB 提供的一个高级抽象层,可用于在 MongoDB 中执行 CRUD 操作,每一个 userRepository 都相当于一个仓库。你可以定义一个接口继承自 MongoRepository<T,ID> 类,其中 T 代表实体类,ID 代表该实体类的 ID,Spring Data MongoDB 会自动生成对应的实现类。在自动生成的实现类中,你可以使用多种查询方式,如 findXXByXX 等,它们将返回一个或者多个匹配的实体类列表。userRepository 提供了一种更简洁的方式组织和使用查询,对于单表操作可以方便的完成常规操作。

mongoTemplate 是 MongoDB 原生 Java 驱动的封装。它提供了更为底层的访问方式,可通过它执行各种 MongoDB 原生命令,例如 update、remove 等。当在 MongoDB 操作需要使用类似的聚合操作或在使用 MongoDB 4.4 引入的一些高级特性的时候,则需要使用 mongoTemplate。与 userRepository 不同,mongoTemplate 对查询语句没有任何限制,处理起复杂操作更为方便。但是需要开发人员自己编写查询语句。

简单来说,如果你仅需要在 MongoDB 中执行常规的单表 CRUD 操作,则可以考虑使用userRepository,如果需要进行更复杂的操作,则可以使用 mongoTemplate。

2、mongoTemplated 的相关操作代码

import com.example.mongdb.entity.User;
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.domain.PageRequest;
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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Pattern;

@SpringBootTest
class MongdbApplicationTests {

    @Autowired
    private MongoTemplate mongoTemplate;

    //添加
    @Test
    public void createUser() {
        User user = new User();
        user.setAge(10000);
        user.setName("李世民");
        user.setEmail("4932200@qq.com");
        User user1 = mongoTemplate.insert(user);
        System.out.println(user1);
    }

    //查询所有
    @Test
    public void findUser() {
        List<User> userList = mongoTemplate.findAll(User.class);
        System.out.println(userList);
    }

    //根据id查询
    @Test
    public void getById() {
        User user = mongoTemplate.findById("64560ce42c90521b42090b8d", User.class);
        System.out.println(user);
    }

    //条件查询
    @Test
    public void findUserList() {
        Query query = new Query(Criteria
                .where("name").is("test")
                .and("age").is(20));
        List<User> userList = mongoTemplate.find(query, User.class);
        System.out.println(userList);
    }

    //模糊查询
    @Test
    public void findUsersLikeName() {
        String name = "est";
        String regex = String.format("%s%s%s", "^.*", name, ".*$");
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        Query query = new Query(Criteria.where("name").regex(pattern));// regex 类似正则
        List<User> userList = mongoTemplate.find(query, User.class);
        System.out.println(userList);
        // ----------------------------------------------------------------------------------------
        // 使用 MongoDB 的 Java 驱动程序提供的 Criteria 和 PageRequest 类来实现
        Criteria criteria = new Criteria();
        criteria.and("name").regex("三");
        criteria.and("email").regex("22");
        // 使用PageRequest分页 并设置age降序排序
        PageRequest page = PageRequest.of(0, 10, Sort.by("age").descending());
        List<User> products = mongoTemplate.find(Query.query(criteria).with(page), User.class);
        System.out.println(products);
    }

    //分页查询
    @Test
    public void findUsersPage() {
        String name = "est";
        int pageNo = 1;
        int pageSize = 10;

        Query query = new Query();
        String regex = String.format("%s%s%s", "^.*", name, ".*$");
        Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
        query.addCriteria(Criteria.where("name").regex(pattern));
        int totalCount = (int) mongoTemplate.count(query, User.class);
        List<User> userList = mongoTemplate.find(query.skip((pageNo - 1) * pageSize).limit(pageSize), User.class);

        Map<String, Object> pageMap = new HashMap<>();
        pageMap.put("list", userList);
        pageMap.put("totalCount",totalCount);
        System.out.println(pageMap);
    }

    //修改
    @Test
    public void updateUser() {
        // 根据id查询
        User user = mongoTemplate.findById("64560ce42c90521b42090b8d", User.class);
        // 设置修改值
        user.setName("杨贵妃");
        user.setAge(25);
        user.setEmail("493220990@qq.com");
        Query query = new Query(Criteria.where("_id").is(user.getId()));
        Update update = new Update();
        update.set("name", user.getName());
        update.set("age", user.getAge());
        update.set("email", user.getEmail());
        // 调用方法实现修改
        UpdateResult result = mongoTemplate.upsert(query, update, User.class);
        long count = result.getModifiedCount();
        System.out.println(count);
    }

    //删除操作
    @Test
    public void delete() {
        Query query =
                new Query(Criteria.where("_id").is("64560d1037499b2f6352a6b9"));
        DeleteResult result = mongoTemplate.remove(query, User.class);
        long count = result.getDeletedCount();
        System.out.println(count);
    }
}

3、userRepository 的相关操作代码

import com.example.mongdb.entity.User;
import com.example.mongdb.repository.UserRepository;
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.*;
import java.util.List;

@SpringBootTest
public class DemomogoApplicationTests1 {

    @Autowired
    private UserRepository userRepository;
    
    //添加
    @Test
    public void createUser() {
        User user = new User();
        user.setAge(22);
        user.setName("王三");
        user.setEmail("3332200@qq.com");
        User user1 = userRepository.save(user);
        System.out.println(user1);
    }

    //查询所有
    @Test
    public void findUser() {
        List<User> userList = userRepository.findAll();
        System.out.println(userList);
    }

    //id查询
    @Test
    public void getById() {
        User user = userRepository.findById("64561d604656851f9ff9235b").get();
        System.out.println(user);
    }

    //条件查询
    @Test
    public void findUserList() {
        User user = new User();
        user.setName("张三");
        user.setAge(20);
        Example<User> userExample = Example.of(user);
        List<User> userList = userRepository.findAll(userExample);
        System.out.println(userList);
    }

    //模糊查询
    @Test
    public void findUsersLikeName() {
        //创建匹配器,即如何使用查询条件
        ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
                .withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写
        User user = new User();
        user.setName("三");
        Example<User> userExample = Example.of(user, matcher);
        List<User> userList = userRepository.findAll(userExample);
        System.out.println(userList);
    }

    //分页查询
    @Test
    public void findUsersPage() {
//        Sort sort = Sort.by(Sort.Direction.DESC, "age");
//        //0为第一页
//        Pageable pageable = PageRequest.of(0, 5, sort);
//        //创建匹配器,即如何使用查询条件
//        ExampleMatcher matcher = ExampleMatcher.matching() //构建对象
//                .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING) //改变默认字符串匹配方式:模糊查询
//                .withIgnoreCase(true); //改变默认大小写忽略方式:忽略大小写
//        User user = new User();
//        user.setName("三");
//        //创建实例
//        Example<User> example = Example.of(user, matcher);
//        Page<User> pages = userRepository.findAll(example, pageable);
//        System.out.println(pages);


//        Pageable pageable = PageRequest.of(0, 10); // 每页查询10条数据,查询第1页
//        List<User> users = userRepository.findUsers(pageable);
//        System.out.println(users);

        String keyword = "三"; // 搜索关键字
        Pageable pageable = PageRequest.of(0, 2); // 每页查询10条数据,查询第1页
        List<User> users = userRepository.findUsersByRegex(keyword, pageable);
        System.out.println(users);

    }

    //修改
    @Test
    public void updateUser() {
        User user = userRepository.findById("64561d604656851f9ff9235b").get();
        user.setName("张三_1");
        user.setAge(25);
        user.setEmail("883220990@qq.com");
        User save = userRepository.save(user);
        System.out.println(save);
    }

    //删除
    @Test
    public void delete() {
        userRepository.deleteById("64561d604656851f9ff9235b");
    }
}

UserRepository 接口

import com.example.mongdb.entity.User;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;
import org.springframework.data.mongodb.repository.Query;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface UserRepository extends MongoRepository<User,String> {
    // 分页查询
    @Query("{}")
    List<User> findUsers(Pageable pageable);

    // 模糊查询并分页
    @Query("{name: {$regex: ?0, $options: 'i'}}")
    List<User> findUsersByRegex(String keyword, Pageable pageable);
}

User 实体类

import lombok.Data;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Data
@Document("User")
public class User {

    @Id
    private String id;
    private String name;
    private Integer age;
    private String email;
    private String createDate;
}

相关参考文档:MongoDB超详细保姆级入门教程!

在这里插入图片描述

MongoDB 数据库 教程 MongoDB 数据库中文帮助文档目前国内还很少,购买的书籍大部分都是拼凑出来的,没有实际意义,该文档是作者学习Mongodb时的学习笔记,其中详细介绍了MongoDB的学习过程,适合初学者。 立即下载

相关推荐

从零到一:RK3588平台上的星闪模块驱动移植全解析

本文详细解析了在RK3588平台上移植UB37星闪模块驱动的完整流程,涵盖内核配置、设备树适配、驱动编译、功能测试等关键步骤。通过实践指导,帮助开发者掌握星闪技术在嵌入式系统中的集成与应用,提升无线通信模块的开发效率。

qsc90123456的博客 337

MogoTemplate基本入门(Mongodb数据库基本增删改查)

所以我们可以简单了解一下Mongodb,然后用java的Api去操作就行了没必要花很大功夫在命令行上操作执行先看看这个简单了解一下我们的Mongodb然后看这个教程的15p-20p,来简单在IEDA上用MongoTemplate。

LUCIAZZZ的博客 1659

MaxENT生态位模型实战:从数据准备到论文发表的完整指南

本文提供MaxENT生态位模型从数据准备到论文发表的完整实战指南,涵盖物种分布数据处理、环境变量筛选、参数优化及结果可视化等关键步骤。特别介绍如何通过R语言进行高级建模优化,提升模型AUC值,并分享海洋生物专题研究中的数据处理技巧。适合生态学研究者快速掌握这一强大的物种分布预测工具,产出高质量研究成果。

tensor9flow的博客 301

MogoDB数据库

介绍MogoDB的操作命令及springBoot集成MogoDB

小趴菜不能喝的博客 735

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了遇到‘Floating point exception’错误时的7个详细排查步骤。从理解浮点异常的本质到边界条件检查、时间步长设置、求解器选择、网格优化、亚松弛因子调节以及高阶格式的取舍,帮助用户快速定位并解决问题,确保CFD仿真的稳定性和准确性。

weixin_30480075的博客 260

MATLAB闪退别慌!5分钟搞定Windows系统预设文件修复(附详细截图)

本文针对MATLAB在Windows系统下频繁闪退的问题,提供了快速有效的解决方案。核心在于修复或重置损坏的MATLAB预设文件,通过图文并茂的五步法,指导用户定位AppData目录、重命名预设文件夹,从而让MATLAB自动生成全新配置以解决闪退。文章还涵盖了问题诊断、设置备份及进阶排查方法,帮助用户彻底根除启动故障。

weixin_29234423的博客 925

数据库MongoDB

MongoDB数据库

usa_washington的博客 988

分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件

分子动力学模拟学习1-采用AmberTools21的MCPB.py构建金属蛋白的top文件

weixin_45011386的博客 3823

mogodb 常用操作

MongoDB是一个基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB的常用操作主要包括数据库操作、集合操作、文档操作等。

北桥源木 522

踩过20+工控视觉项目的坑后,我用C# + 海康相机 + YOLOv11实现了零依赖产线缺陷检测

触发式检测:只有光电传感器检测到零件到位,才触发相机拍照和算法检测,不是持续推理,减少工控机性能占用;全链路本地运行:从图像采集、算法推理到不良品剔除,所有逻辑全在本地工控机运行,不需要外网、不需要云端服务,哪怕产线断网也能正常运行;异常降级机制:算法推理异常时,系统自动触发产线缓停,同时声光告警,不会让不良品流到下工序,满足汽车行业IATF16949质量要求;模块化解耦:算法核心层和业务逻辑层完全分离,后续更换YOLO模型、新增缺陷类型,只需要替换模型文件,不需要修改业务逻辑;全链路可追溯。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 152

UE5实现建筑剖切效果

UE5实现建筑剖切效果

专注GIS开发 8462

python爬虫十九:mongodb的使用

1、mongodb在数据库层面上的基本命令 查看有哪些数据库:show dbs 切换数据库use 数据库 查看当前数据库db注意创建数据库的时候如果不添加数据是看不见的,但是可以切换,往该数据库中添加信息之后,该数据可以被db到 删除数据库db 创建并且自动切换数据库use 数据库:有的化直接切换 查看数据库中的表(集合)show tables/show collections 2、mongodb在集合层面上的基本命令 查看集合show tables ...

weixin_49088841的博客 502

一篇文章带你快速入门 MATLAB

文章目录一、认识 MATLAB 界面二、MATLAB 的运行方式三、Matlab 中的窗口1. 命令窗口2. MATLAB的程序编辑窗口3. 工作空间窗口4. 命令历史窗口5. 图形窗口6. 当前目录窗口四、MATLAB的帮助系统1. 帮助命令2. 联机帮助五、其他知识补充1. MATLAB的搜索路径2. 变量命名规则3. M文件命名规则 一、认识 MATLAB 界面 在 MATLAB Desktop 中,工具条取代了菜单和工具栏。应用程序库收纳了 MATLAB 产品系列的应用程序,单一文件应用程序打包为一

南淮北安的博客 5126

分布式文件存储的数据库——Mongodb

什么是mongodb MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。    MongoDB是一个介于关系数据库和 非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言...

379

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Mongodb分布式文件存储数据库

MongoDB 是由 C++ 语言编写的,基于分布式文件存储的开源数据库系统。在高负载情况下,可通过添加更多节点保证服务器性能。它旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为文档,数据结构由键值(key=>value)对组成,其文档类似于 JSON 对象,字段值可以包含其他文档、数组及文档数组。官方文档官方下载地址。

懂搬砖 1795

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

分布式文件存储数据库 MongoDB

文章转载于:乐字节 文章内容:分布式文件存储数据库 MongoDB 1.png MongoDB 简介 Mongo 并非芒果(Mango)的意思,而是源于 Humongous(巨大的;庞大的)一词。 MongoDB 是一个基于分布式文件存储的 NoSQL 数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。关于什么是 NoSQL 可阅读《学了那么多 NoSQL 数据库 NoSQL 究竟是啥》 MongoDB 是一个介于关系型数据库和非关系型数据库之间的产品,是非关系型数据库

weixin_53374029的博客 286

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

MongoDB 一个基于分布式文件存储的数据库

简介  MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。   特点   它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:     *面向集合存储,易存储对象类型的数据。     *模式自由。     *支持动态查询。     *支持完全索引,包含内部对象。     *支持查询。  ...

weixin_34381687的博客 379

分布式文件存储的数据库开源项目MongoDB

分布式文件存储的数据库开源项目MongoDB

zj_jay的专栏 685

MongoDB数据库-一个基于分布式文件存储的数据库

MongoDB一、了解MongoDB二、基本命令三、安装MongoDB1.windows安装 一、了解MongoDB MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 特点:高性能、可扩展、易部署、易使用,存储数据非常方便 ,NO SQL 二、基本命令 三、安装MongoDB 1.windows安装 从官网下载安装包 https://www.mongodb.com/try/download/community?tck=

sam80000的博客 559

一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程

MongoDB是一款基于分布式文件存储的数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。它介于关系数据库和非关系数据库之间,支持的数据结构非常松散,类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

在这里,我乐于倾囊相授,分享我的技术心得、项目实战经验、技术技巧。希望能够惠及更多的开发者,助力大家在技术的海洋中扬帆远航。 3183

MongoDB基于分布式文件存储的数据库

点击上方“蓝字”关注本公众号1.mongoDB简介1.NoSQL数据库 数据库:进行高效的、有规则的进行数据持久化存储的软件NoSQL数据库:Not only sql,指...

python爬虫人工智能大数据 615

MongoDB | 基于分布式文件存储的数据库

MongoDB是一个基于分布式文件存储的数据库,是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。MongoDB最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。指标项指标值说明。

m0_59044499的博客 1794
上一篇: 【DM】达梦数据库与MySQL适配
下一篇: 【MySQL】幽深不可测,登此方觉心
智汇风渔AI小白
博客等级 码龄7年 1万+粉丝 179原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智汇风渔AI小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值