非关系型数据库MongoDB(文档型数据库)介绍与使用实例

【MongoDB 】MongoDB 介绍及应用,设计到4个案例 MongoDB 是非关系型数据库,也就是nosql,存储json数据格式会非常灵活,要比数据库mysql/MariaDB更好,同时也能为mysql/MariaDB分摊一部分的流量压力。对于经常读写的数据他会存入内存,如此一来对于热数据的并发性能是相当高的,从而提升整体的系统效率。另外呢,对于非事务的数据完全可以保存到MongoDB中,这些数据往往也是非核心数据。 阅读详情
AI摘要

本文介绍MongoDB的特点与应用场景,并通过实例演示如何进行文档的增删改查、创建索引等操作。

MongoDB介绍

        MongoDB是一种开源的文档型数据库管理系统,它使用类似于JSON的BSON格式(Binary JSON)来存储数据。与传统关系型数据库不同,MongoDB不使用表和行的结构,而是采用集合(Collection)(Mysql表)和文档(Document)(MySql行)的概念来组织数据。

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

MongoDB的主要特点包括:

1. 强大的灵活性:MongoDB的文档模型允许存储不同结构的数据,使用者可以轻松地添加、修改和删除字段,而无需进行复杂的模式迁移。

2. 高性能:MongoDB支持水平扩展,可以实现高并发和大规模的数据处理。它还提供了索引和查询优化等功能,以提高读取和写入的性能。

3. 高可用性:MongoDB支持主从复制和分片的特性,可以实现数据的备份和故障恢复。当主节点出现故障时,系统可以自动切换为备用节点来提供服务。

4. 丰富的查询语言:MongoDB使用类似于SQL的查询语言来进行数据的查询和聚合操作。同时,它还提供了地理空间查询和全文索引等功能,以满足各种复杂的查询需求。

使用场景

MongoDB是一种非关系型数据库,适用于许多不同的使用场景。以下是一些常见的

网站数据存储:

        实时应用:MongoDB 非常适合需要频繁插入、更新和查询的实时应用程序,比如新闻feed、博客、论坛、评论系统等,其快速的写入速度和高效的查询性能有利于应对高并发访问。

游戏开发:

        游戏用户信息:存储玩家账户、角色属性、装备、积分等数据,内嵌文档结构能很好地满足这类复杂且动态变化的数据需求。

        实时数据分析:游戏事件日志、实时排行榜等场景要求数据库具备快速写入和即时查询的能力。

物流与电商:

        订单管理:订单信息、商品库存、交易历史等,MongoDB 对频繁更新的状态跟踪表现优秀。

        用户行为分析:记录并分析用户浏览、购买、搜索等行为数据。

社交网络:

        用户资料与社交关系:存储用户个人信息、好友列表、消息记录等半结构化数据。

        地理位置服务:利用地理空间索引轻松实现附近的用户、地点查找功能。

物联网(IoT):

        设备数据存储:收集来自各种智能设备的实时或周期性上报的数据,如温度、湿度、状态变化等信息。

        日志记录与分析:处理大量的设备日志数据,进行多维度分析和实时监控。

内容管理系统:

        博客文章、多媒体内容存储:支持大文本、富媒体类型的内容存储,同时方便实现内容标签、分类等关联查询。

视频直播和流媒体:

        用户活动记录:存储用户观看历史、互动行为(如送礼、弹幕)等信息。

        实时统计与计费:对用户活动数据进行实时统计和计费计算。

缓存系统:

        高性能缓存:作为高速缓存层,存储经常访问但不需永久保存或可以容忍短时间丢失的数据。

大数据分析:

        聚合框架:MongoDB 内置了强大的聚合管道功能,可以在数据库层面完成数据预处理和初步分析。

 关键名词

在 MongoDB 中有三个比较重要的名词:数据库、集合、文档!

数据库 (Database)

        在 MongoDB 中,数据库是最顶层的逻辑容器,它包含一组集合(collections)。每个 MongoDB 实例可以包含多个数据库,而且数据库之间相互独立,互不影响。

集合 (Collection)

        集合类似于关系型数据库中的表,它是 MongoDB 中存储文档的容器。集合中的文档不需要预先定义 schema(模式),也就是说,同一个集合中的文档可以有不同的字段结构。每个集合中的文档都有唯一的 _id 字段作为主键标识符。例如,users 或 orders 都可以是集合名,它们分别存储用户信息或订单数据。

文档 (Document)

        文档是 MongoDB 中的基本数据单元,它对应于关系型数据库中的行。文档是以 BSON(Binary JSON)格式存储的数据结构,类似于 JSON 对象,支持嵌套结构和数组。每个文档包含多个键值对,键为字符串,值可以是各种数据类型,包括其他文档、数组和其他复杂结构。例如,一个用户文档可能如下所示:

MongoDB 使用 

引用依赖包

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

配置文件配置mongodb资料(.property文件)

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

准备对象Person

@Document(collection = "person") // 指定集合名称,就是类似mysql的表,如果不指定就以类名称作为集合名称
@Data
public class Person {
    @Id // 文档id, 很重要,类似mysql表的主键
    private Long id;
    private String name;
    private Integer age;
    /**
     * 创建一个10秒之后文档自动删除的索引 结合 spring.data.mongodb.auto-index-creation = true 一起使用
       创建一个10秒之后文档自动删除, 类似 redis ttl
注意:这个字段必须是date类型或者是一个包含date类型值的数组字段,一般我们使用date类型;

     */
    @Indexed(expireAfterSeconds=10)
    private LocalDateTime createTime;
}

新增文档 

 @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 插入文档
     */
    @Test
    void insert() {
        Person person =new Person();
        person.setId(20530712L);
        person.setName("张三");
        person.setAge(26);
        mongoTemplate.insert(person);

    }
    /**
     * 自定义集合,插入文档
     */
    @Test
    public void insertCustomCollection() throws Exception {
        Person person =new Person();
        person.setId(20530712L);
        person.setName("张三");
        person.setAge(26);
        person.setCreateTime(LocalDateTimeUtil.now());
        mongoTemplate.insert(person, "custom_person");
    }
    /**
     * 批量插入文档
     */
    @Test
    public void insertBatch() throws Exception {
        List<Person> personList = new ArrayList<>();
        for (int i = 1; i < 5; i++) {
            Person person =new Person();
            person.setId((long) i);
            person.setName("张三"+i);
            person.setAge(26);
            person.setCreateTime(LocalDateTimeUtil.now());
            personList.add(person);

        }

       //mongoTemplate.insert(personList, "custom_person");
        mongoTemplate.insertAll(personList);
    }
    /**
     * 存储文档,如果没有插入,否则更新
     * 在存储文档的时候会通过主键 ID 进行判断,如果存在就更新,否则就插入
     */
    @Test
    public void save() throws Exception {
        Person person =new Person();
        person.setId(1L);
        person.setName("张三33");
        person.setAge(26);
        person.setCreateTime(LocalDateTimeUtil.now());
        mongoTemplate.save(person);
    }

修改文档

 @Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 更新文档,匹配查询到的文档数据中的第一条数据
     * @throws Exception
     */
    @Test
    public void update1() throws Exception {
     
        //更新条件
        Query query= new Query(Criteria.where("id").is(2));

        //更新值
        Update update= new Update().set("name", person.getName()).set("age", 32);

        //更新查询满足条件的文档数据(第一条)
        UpdateResult result =mongoTemplate.updateFirst(query, update, Person.class);
        System.out.println("更新条数:" + result.getMatchedCount());
    }
    /**
     * 更新文档,匹配查询到的文档数据中的所有数据
     */
    @Test
    public void updateMany() throws Exception {

        //更新年龄大于等于32的人
        Query query= new Query(Criteria.where("age").gte(18));

        //更新姓名为 “我成人了”
        Update update= new Update().set("name", "我成人了");

        //更新查询满足条件的文档数据(全部)
        UpdateResult result = mongoTemplate.updateMulti(query, update, Person.class);
        System.out.println("更新条数:" + result.getMatchedCount());
    }

删除文档

@Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 删除符合条件的所有文档
     */
    @Test
    public void remove() throws Exception {
      //删除年龄小于18的所有人
        Query query = new Query(Criteria.where("age").lt(18));
        DeleteResult result = mongoTemplate.remove(query, Person.class);
        System.out.println("删除条数:" + result.getDeletedCount());
    }

    /**
     * 删除符合条件的单个文档,并返回删除的文档
     */
    @Test
    public void findAndRemove() throws Exception {

        Query query = new Query(Criteria.where("id").is(1L));
        Person result = mongoTemplate.findAndRemove(query, Person.class);
        System.out.println("删除的文档数据:" + result);
    }

    /**
     * 删除符合条件的所有文档,并返回删除的文档
     */
    @Test
    public void findAllAndRemove() throws Exception {

        // 使用 in 删除 符合条件的多条文档,并返回
        Query query = new Query(Criteria.where("id").in(1,2,3));
        List<Person> result = mongoTemplate.findAllAndRemove(query, Person.class);
        System.out.println("删除的文档数据:" + result.toString());
    }

查询文档

原生查询

db.getCollection("my_person").find({ name: /^张/ ,name: /大$/})


db.getCollection("my_person").find({ name: /^张/,age:{$lte:12}})

Java实现

@Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 查询集合中的全部文档数据
     */
    @Test
    public void findAll()  {
        List<Person> result = mongoTemplate.findAll(Person.class);
        System.out.println("查询结果:" + result.toString());
    }

    /**
     * 查询集合中指定的ID文档数据
     */
    @Test
    public void findById() {
        long id = 2L;
        Person result = mongoTemplate.findById(id, Person.class);
        System.out.println("查询结果:" + result.toString());
    }
    /**
     * 根据条件查询集合中符合条件的文档,返回第一条数据
     */
    @Test
    public void findOne() {
        Query query = new Query(Criteria.where("name").is("张三3"));
        Person result = mongoTemplate.findOne(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }

    /**
     * 根据条件查询所有符合条件的文档
     */
    @Test
    public void findByCondition() {

        Query query = new Query(Criteria.where("age").gt(18));
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }
    /**
     * 根据【AND】关联多个查询条件,查询集合中所有符合条件的文档数据
     */
    @Test
    public void findByAndCondition() {
        // 创建条件
        Criteria name = Criteria.where("name").is("张三");
        Criteria age = Criteria.where("age").is(18);
        // 创建条件对象,将上面条件进行 AND 关联
        Criteria criteria = new Criteria().andOperator(name, age);
        // 创建查询对象,然后将条件对象添加到其中
        Query query = new Query(criteria);
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }
    /**
     * 根据【OR】关联多个查询条件,查询集合中的文档数据
     */
    @Test
    public void findByOrCondition() {
        // 创建条件
        Criteria criteriaUserName = Criteria.where("name").is("张三");
        Criteria criteriaPassWord = Criteria.where("age").is(22);
        // 创建条件对象,将上面条件进行 OR 关联
        Criteria criteria = new Criteria().orOperator(criteriaUserName, criteriaPassWord);
        // 创建查询对象,然后将条件对象添加到其中
        Query query = new Query(criteria);
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }
    /**
     * 根据【IN】关联多个查询条件,查询集合中的文档数据
     */
    @Test
    public void findByInCondition() {
        // 设置查询条件参数
        List<Long> ids = Arrays.asList(10L, 11L, 12L);
        // 创建条件
        Criteria criteria = Criteria.where("id").in(ids);
        // 创建查询对象,然后将条件对象添加到其中
        Query query = new Query(criteria);
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }

    /**
     * 根据【逻辑运算符】查询集合中的文档数据
     */
    @Test
    public void findByOperator() {
        // 设置查询条件参数
        int min = 20;
        int max = 35;
        Criteria criteria = Criteria.where("age").gt(min).lte(max);
        // 创建查询对象,然后将条件对象添加到其中
        Query query = new Query(criteria);
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }
    /**
     * 根据【正则表达式】查询集合中的文档数据
     */
    @Test
    public void findByRegex() {
        // 设置查询条件参数
        String regex = "^张";
        Criteria criteria = Criteria.where("name").regex(regex);
        // 创建查询对象,然后将条件对象添加到其中
        Query query = new Query(criteria);
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }

    /**
     * 根据条件查询集合中符合条件的文档,获取其文档列表并排序
     */
    @Test
    public void findByConditionAndSort() {
        Query query = new Query(Criteria.where("name").is("张三")).with(Sort.by("age"));
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }

    /**
     * 根据单个条件查询集合中的文档数据,并按指定字段进行排序与限制指定数目
     */
    @Test
    public void findByConditionAndSortLimit() {
        String userName = "张三";
        //从第5行开始,查询3条数据返回
        Query query = new Query(Criteria.where("name").is("张三"))
                .with(Sort.by("createTime"))
                .limit(3).skip(5);
        List<Person> result = mongoTemplate.find(query, Person.class);
        System.out.println("查询结果:" + result.toString());
    }
    /**
     * 统计集合中符合【查询条件】的文档【数量】
     */
    @Test
    public void countNumber() {
        // 设置查询条件参数
        String regex = "^张*";
        Criteria criteria = Criteria.where("name").regex(regex);
        // 创建查询对象,然后将条件对象添加到其中
        Query query = new Query(criteria);
        long count = mongoTemplate.count(query, Person.class);
        System.out.println("统计结果:" + count);
    }

创建索引

@Autowired
    private MongoTemplate mongoTemplate;

    /**
     * 创建升序索引
     */
    @Test
    public void createAscendingIndex() {
        // 设置字段名称
        String field = "age";
        // 创建索引
        mongoTemplate.getCollection("person").createIndex(Indexes.descending(field));
    }

    /**
     * 根据索引名称移除索引
     */
    @Test
    public void removeIndex() {
        // 设置字段名称
        String field = "age_1";
        // 删除索引
        mongoTemplate.getCollection("person").dropIndex(field);
    }


    /**
     * 查询集合中所有的索引
     */
    @Test
    public void getIndexAll() {
        // 获取集合中所有列表
        ListIndexesIterable<Document> indexList =   mongoTemplate.getCollection("person").listIndexes();
        // 获取集合中全部索引信息
        for (Document document : indexList) {
            System.out.println("索引列表:" + document);
        }
    }

NoSQL文档型数据库之MongoDb的配置与使用 1.NoSQL数据库分为四大类:分别是键值存储数据库,列存储数据库,文档型数据库以及图形数据库。本文主要的记录MongoDb,它是一个基于分布式文件存储的数据库,可以说是非关系型数据库中最像关系型数据库的。主要的介绍,MongoDb的配置以及简单的使用。 2.MongoDb的安装与配置 MongoDb的下载地址:链接: https://pan.baidu.com/s/1geSdtuV 密码: 阅读详情

相关推荐

深入探究MongoDB:从基础到实战,一个全面的指南

MongoDB是一个领先的NoSQL数据库,以其灵活的文档型数据模型、简单的安装和高效的操作而闻名。MongoDB的记录是由字段和值对组成的文档,类似于JSON对象,支持不同字段的文档在同一个集合中,以及线上修改数据模式无需下线​​。它与传统的关系型数据库相比,提供了更加动态和可扩展的解决方案,特别适合大数据和实时应用。 在安装和配置方面,MongoDB提供了简洁的步骤,包括获取安装包、解压、设置系统执行路径、创建数据目录和启动服务​​。操作MongoDB主要通过mongo shell进行,包括连接服务、

oWuChenHua的博客 1316

NoSql文档型数据库——Mongodb

MongoDB是一个。

2301_80412275的博客 1624

数据库系列(1)常见的四种非关系型数据库(NoSQL)

非关系型数据库介绍:mongodb,redis, noe4j

追赶时代的博客 4216

关系型数据库与非关系型数据库、Redis数据库

关系型数据库:实例–>数据库–>表(table)–>记录行(row)、数据字段(column)——》存储数据非关系型数据库:实例–>数据库–>集合(collection) -->键值对(key-value)非关系型数据库不需要手动建数据库和集合(表)。Redis是一个开源的、使用C语言编写的NoSQL 数据库。【非关系型数据库】Redis基于内存运行并支持持久化(支持存储在磁盘),采用**key-value (键值对)**的存储形式,是目前分布式架构中不可或缺的一环。

mikechen1的博客 1万+

【八股】非关系型数据库篇(Redis+ES)

🙂缓存:缓存穿透、击穿、雪崩、双写一致、持久化、数据过期、数据淘汰策略🙂分布式锁:setnx、redisson🙂消息队列、延迟队列、保存token:何种数据类型🙂计数器。

qq_44768318的博客 3847

【配环境】ubuntu18.04 3080ti显卡+cuda+cudnn+torch

1.打开系统设置中的software & updates点击 System Settings,选择 Additional Drivers 标签,下面会列出当前显卡可用的驱动版本。 注意:3080ti建议不要安装最新版本驱动 点击Apply Changes即可安装; 注意:3080ti只能装cuda11.x 修改软连接修改系统使用的cuda 卸载老版本cuda 重新查询看是否卸载成功 显卡驱动及CUDA Toolkit最高对应版本 查询驱动版本............

sinat_41670685的博客 3913

常见的非关系型数据库有哪些

1. Redis是什么 Redis 是 C 语言开发的一个开源的(遵从 BSD 协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。 它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。 Redis作为一个内存数据库,具有如下有特点: 性能优秀, 数据在内存中, 读写速度非常快, 并支持10W QPS(每秒查询效率). 单进程单线程, 是线程安全的. 非阻塞I/O多路复用机制, 因为是但线程的,通过跟踪每个I/O流的状态, 来管理多个I/O流

啊策策大数据社区 1万+

【计算机视觉】基于复杂环境下的车牌识别

本文针对复杂环境下(光照变化、车牌变形、噪声干扰)的车牌识别问题,提出了一套完整的优化方案。通过四个核心环节进行改进:1)采用CLAHE、同态滤波等技术优化光照处理;2)使用边缘检测和透视变换应对车牌变形;3)结合中值滤波和暗通道去噪算法消除干扰;4)改进字符分割与识别方法。文章提供了详细的Python实现代码,展示了从预处理到字符识别的完整流程,并通过多策略融合显著提升了复杂场景下的识别准确率。实验结果表明,该方法能有效应对各类复杂环境挑战,为实际应用提供了可靠解决方案。

2401_84149564的博客 1626

MongoDB文档型NoSQL数据库:核心知识解析

在当今大数据时代,随着信息量的爆炸式增长,传统的数据库系统在处理海量数据时逐渐显露出其局限性。特别是在处理非结构化数据时,关系型数据库的固定模式难以满足灵活多变的数据存储需求。为了解决这一问题,文档型NoSQL数据库应运而生,其中MongoDB作为其中的佼佼者,以其独特的文档存储方式,为数据存储和查询提供了极大的便利。在众多应用场景中,我们常常遇到需要存储大量非结构化数据的情况,如社交媒体平台、电子商务网站等。

AIHacksCash的博客 1129

Matlab信号处理

Matlab信号处理 需要安装的APP: Signal Analyzer app:提供一个可以在时域和频域可视化、测量、分析和比较信号的工具; Filter Builder和Filter Designer app:可以很方便通过下拉菜单和填写参数的方式来设计和分析数字滤波器; 对于小波分析,Matlab提供了: 1.Wavelet Signal Denoise app:利用离散小波变换对信号去噪; 2.Signal Multiresolution Analyzer app:对信号进行多分辨率的分析和可视化

Huichin_Min的博客 4399

无需Root!用VirtualXposed+JustTrustMe在安卓高版本上抓包拼多多API数据

本文详细介绍了在安卓高版本设备上无需Root权限即可抓取拼多多API数据的完整方案,通过VirtualXposed与JustTrustMe组合技术,有效绕过SSL Pinning限制。文章涵盖工具准备、环境配置、应用处理及实战分析,特别针对PDD应用的混合通信策略提供了专业解决方案,适合开发者进行竞品分析和数据采集。

weixin_28678151的博客 453

NoSQL文档型存储数据库—MongoDB

一、 NoSQL数据库分类MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。NoSQL 数据库数量很多,但可以划分为如下图所示的 4 大类:键值存储数据库:数据库代表——Redis;列存储数据库:数据库代表——...

跟着阿笨一起玩NET 952

【OTFS与信号处理:论文阅读4】OTFS时延多普勒域嵌入导频辅助信道估计(已更新)

【OTFS与信号处理:论文阅读】Embedded Pilot-Aided Channel Estimation for OTFS in Delay–Doppler Channel(快来看看OTFS嵌入式导频设计的经典之作!!!)

Cuby的博客 5335

【Redis】NoSQL数据库简介

文章目录一、概述二、优点解决CPU以及内存的压力解决IO压力三、适用场景四、不适用场景五、主要数据库1、Memcache2、Redis 3、MongoDB六、分类键值(Key-Value)存储数据库行式存储数据库(大数据) 图关系型数据库文档型数据库分类对比 一、概述 NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。 NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。 不遵循SQL标准 不支

Java领域优质创作者,华为云享专家 1万+

js逆向实战:爬取淘宝男装商品

本文介绍了一个淘宝商品数据爬取程序的技术实现方案。该程序通过分析淘宝H5页面接口,实现了商品名称、价格、销量等关键信息的抓取,并支持图片下载功能。核心内容包括:1. 使用Request库发送HTTP请求获取数据;2. 通过逆向分析淘宝的签名算法(MD5加密)生成合法请求;3. 解析JSON数据并提取商品信息;4. 处理分页参数实现多页数据爬取;5. 将数据保存为CSV文件并下载商品图片。程序还实现了反爬虫绕过、错误处理、文件管理等辅助功能,完整展示了从数据采集到存储的全过程。

那些看似不起波澜的日复一日,会在某天让你看到坚持的意义 1573

vue2学习笔记2-老规矩,从Hello World开始,了解Vue实例和模板

想要把“Hello,World”放置在页面上,首先需要准备一个HTML的块级元素div,来承接内容。

l_q_l的专栏 1257

【数据库】非关系型数据库 之 文档型数据库 MongoDB 的使用

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

沙师弟专栏 4万+

【论文复现】——基于NDT与ICP结合的点云配准算法(matlab版)

基于NDT与ICP结合的点云配准算法matlab版

点云侠的博客 490

MongoDB 从入门到实践:全面掌握文档型 NoSQL 数据库核心操作

本文系统介绍了MongoDB的核心使用指南,从基础安装到高级应用。主要内容包括:MongoDB官方资源获取与安装配置;数据库、集合和文档的CRUD操作详解;进阶查询技巧(运算符、映射、排序与分页);用户管理与安全认证机制。文章强调生产环境中的安全实践,如开启认证、权限控制和数据备份,并提供了Python连接示例和命令行操作指导。通过掌握这些内容,开发者能够快速上手MongoDB,满足现代应用对非结构化数据存储的需求。

2402_85519509的博客 991

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

非关系型数据库(nosql)介绍

非关系型数据库也叫Nosql数据库,全称是not noly sql。 2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中提出了NoSQL一词,用于指代那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。Eric Evans使用NoSQL这个词,并不是因为字面上的“没有SQL”的意思,他只是觉得很多经典的关系型数据...

shifengboy的博客 1120

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

MongoDB初识及其重要特性

数据库分类 ​ 数据库是存放数据的仓库,主要分为两种:关系型数据库和非关系型数据库。 ​ 关系型数据库是把复杂的数据结构归结为简单的二元关系,其通过SQL结构化查询语句来操作数据,其最大优点是可以保持数据的一致性。主流的关系型数据库有Oracle、Mysql、SQL Server等。 ​ 非关系型数据是大量结构化数据存储方法的集合,也称NoSQL(Not Only SQL),是对关系型数据库的补充...

丹丹的后花园 1053

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

上一篇: @RequestBody、 @RequestParam 、 @PathVariable 和 @Vaild 注解的使用及区别
下一篇: 分布式设计原理——CAP原则
涵冰...
博客等级 码龄4年 2438粉丝 243原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

涵冰...

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

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

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

打赏作者

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

抵扣说明:

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

余额充值