2025年mongodb数据库类型(mongodb数据库基本操作)

mongodb数据库类型(mongodb数据库基本操作)1 简介 MongoDB 是一个开源 高性能 无模式的文档型数据库 当初的设计就是用于简化开发和方便扩展 是 NoSQL 数据库产品中的一种最像关系型数据库 MySQL 的非关系型数据库 它支持的数据结构非常松散 是一种类似于 JSON 的 格式叫 BSON 所以它既可以存储比较复杂的数据类型 又相当的灵活 MongoDB 中的记录是一个文档 它是一个由字段和值对 eld value 组成的数据结构

大家好,我是讯享网,很高兴认识大家。



1 简介

MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种最像关系型数据库(MySQL)的非关系型数据库。它支持的数据结构非常松散,是一种类似于 JSON 的 格式叫BSON,所以它既可以存储比较复杂的数据类型,又相当的灵活。MongoDB中的记录是一个文档,它是一个由字段和值对(field:value)组成的数据结构。MongoDB文档类似于JSON对象,即一个文档认为就是一个对象。字段的数据类型是字符型,,它的值除了使用基本的一些类型外,还可以包括其他文档,普通数组和文档数组.

1.1 适用场景

    1.2 对比MySQL

    1.4 安装

    这里使用docker部署mongoDB和可视化工具

    2 基本操作

    2.1 数据库

    在MongoDB中,有三个初始数据库,它们是admin、local和config。这三个数据库在MongoDB的架构和管理中具有特殊的作用。

      2.2 集合

      在MongoDB中,集合(Collection)是一组文档(Document)的无序集合,类似于关系型数据库中的表。

      2.3 文档

      在MongoDB中,文档是数据存储的基本单位。它是一个由字段和值组成的数据结构,类似于关系型数据库中的一行记录。MongoDB中的文档采用 BSON(Binary JSON)格式,这是一种二进制编码的 JSON 表示形式。

      一个MongoDB文档是一个包含键值对的有序集合,每个键值对表示文档的一个字段和对应的值。文档的字段可以包含各种数据类型,包括字符串、数字、布尔值、数组、嵌套的文档等。

      2.3.1 数据类型

      MongoDB支持多种数据类型,这些数据类型可用于定义文档中的字段值。以下是MongoDB中常见的数据类型:

        2.3.1 C

        使用方法将文档插入集合。若集合不存在会自动创建,即隐式创建。

        2.3.1 R

        MongoDB支持丰富的条件查询语法,允许你执行各种高级查询。以下是一些MongoDB条件查询的高级用法:

                                            在MongoDB中,投影查询用于指定查询结果中所包含的字段。通过投影,你可以选择只检索文档中的特定字段,而不是整个文档。

                                            投影查询还支持嵌套文档。例如,如果文档中有一个嵌套的地址字段,你可以通过指定嵌套字段来进行投影。

                                            2.3.1 U

                                            基本操作符

                                                还有很多更新操作符。https://www.mongodb.com/docs/manual/reference/operator/update/

                                                要替换除_id字段之外的文档的全部内容,可以使用replaceOne(),替换文档可以具有与原始文档不同的字段。在替换文档中,可以省略_id字段,因为_id字段是不可变的;但是,如果包含id字段,则该字段的值必须与当前值相同。

                                                2.3.1 D

                                                使用方法删除集合中的文档。

                                                3 索引

                                                MongoDB使用B树(或B-树)来实现索引。

                                                3.1 索引分类

                                                      用于全文本搜索,只能用于包含文本字段的集合。

                                                          用于自动删除在指定时间后过期的文档。

                                                          该语句将为 createdAt 字段建立 TTL 索引,可以自动删除过期数据。TTL 索引会根据 expireAt 字段的值自动删除过期数据,可以用于数据清理等应用场景。

                                                            针对属性包含数组数据的情况,MongoDB支持针对数组中每一个element创建索引,Multikey indexes支持strings,numbers和nested documents。

                                                            该语句将为 tags 字段建立多键索引,可以加速查询包含指定标签的文档。多键索引会为数组中的每个元素建立一个索引,可以加速数组元素的查询。

                                                              地理空间索引是针对地理位置信息建立的索引,可以支持地理位置查询

                                                                稀疏索引是 MongoDB 中的一种索引类型,用于对集合中某个字段的值进行索引,但仅包含具有该字段的文档。与普通索引不同,稀疏索引不会包含那些不包含指定字段的文档。

                                                                这将在 字段上创建一个稀疏索引,只包含那些包含 字段的文档。稀疏索引对于只有一小部分文档包含某个字段值的情况非常有用,可以节省索引空间并提高查询性能。


                                                                讯享网

                                                                  确保索引字段的值在整个集合中是唯一的。

                                                                  3.2 索引管理

                                                                    MongoDB 在创建集合的过程中, 在  字段上创建一个唯一的索引, 默认名字为  ,该索引可防止客户端插入两个具有相同值的文档 , 不能在  字段上删除此索引。

                                                                    注意:该索引是唯一索引, 因此值不能重复, 即  值不能重复的

                                                                        使用 方法删除指定索引。若要删除所有索引(除了默认的  索引,_id的索引是无法删除的),可以使用  方法。

                                                                        3.3 性能分析

                                                                        options

                                                                        stage所有类型如下:

                                                                        COLLSCAN:全表扫描

                                                                        IXSCAN:索引扫描

                                                                        FETCH:根据索引去检索指定document

                                                                        SHARD_MERGE:将各个分片返回数据进行merge

                                                                        SORT:表明在内存中进行了排序

                                                                        LIMIT:使用limit限制返回数

                                                                        SKIP:使用skip进行跳过

                                                                        IDHACK:针对_id进行查询

                                                                        SHARDING_FILTER:通过mongos对分片数据进行查询

                                                                        COUNT:利用db.coll.explain().count()之类进行count运算

                                                                        TEXT:使用全文索引进行查询时候的stage返回

                                                                        PROJECTION:限定返回字段时候stage的返回

                                                                        优秀stage的组合(查询的时候尽可能用上索引):

                                                                        Fetch+IDHACK

                                                                        Fetch+IXSCAN

                                                                        Limit+(Fetch+IXSCAN)

                                                                        PROJECTION+IXSCAN

                                                                        SHARDING_FITER+IXSCAN

                                                                        需要优化的组合:

                                                                        COLLSCAN(全表扫描)

                                                                        SORT(使用sort但是无index)

                                                                        COUNT 不使用index进行count)

                                                                        3.4 覆盖查询

                                                                        覆盖查询(Covered Query)是一种查询优化技术,通过使用索引,可以使查询在索引中找到所有所需的字段,而无需回到集合中去检索文档。这可以提高查询性能,因为不需要额外的磁盘 I/O 来获取文档数据,而是直接从索引中获取所需的信息。

                                                                        覆盖查询的关键是确保查询条件和投影字段都可以通过索引满足。具体来说:

                                                                          在这个查询中,查询条件是 ,这个条件可以通过 索引直接匹配。投影字段是 ,这些字段也可以从索引中直接获取。因此,这是一个覆盖查询,不需要回到集合中检索文档数据。

                                                                          https://zhuanlan.zhihu.com/p/?utm_id=0

                                                                          https://blog.csdn.net/weixin_/article/details/

                                                                          小讯
                                                                          上一篇 2025-05-27 17:31
                                                                          下一篇 2025-05-02 20:27

                                                                          相关推荐

                                                                          版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
                                                                          如需转载请保留出处:https://51itzy.com/kjqy/156092.html