MongoDB


一、mongodb下载与安装

下载好之后双击安装包

后面没有任何注意事项,一路next,直到finish

二、使用MongoDB

一、什么是MongoDB?

 MongoDB 是一个开源的、面向文档的 NoSQL 数据库管理系统(DBMS)

二、核心概念与数据结构

一、文档:

定义:MongoDB 中的数据以文档的形式存储,文档是键值对的集合,类似于 JSON 对象。

键是字符串,值可以是各种 BSON 支持的数据类型(字符串、整数、浮点数、布尔值、数组、嵌套文档、日期、二进制数据、ObjectId 等)。

存储在 BSON 格式(二进制编码的 JSON)中,效率更高,支持更多数据类型。

示例

{ "_id": ObjectId("68a297490cc7cee5ae2b6721"), "name": "胖胖", "age": "1岁啦" }

二、集合(Collection)

定义:集合是文档的集合,类似于关系型数据库中的表。

特点:集合是无模式的,即同一个集合中的文档可以有不同的结构。

三、数据库(Database)

定义:数据库是集合的集合,类似于关系型数据库中的数据库。

特点:一个 MongoDB 实例可以包含多个数据库,每个数据库可以包含多个集合。

命名: 避免使用特殊字符,通常使用小写。

三、常用操作

1. CRUD 操作

(下面增删改,1带Many的都是插入多个,删除多个,更新多个)

创建数据库

(use+数据库名字,此数据库存在则使用,不存在则创建)

use mydatabase
创建集合:

有一点需要注意,下面这句话需要在已经use过之后的数据库才能使用,没有选择数据库则出错):

db.createCollection("students")
插入数据
db.students.insertOne({ name: "小明", age: 21 })
db.students.insertMany([{ name: "小李", age: 20 }, { name: "胖胖", age: 1 }])
查询数据
db.students.find()
db.students.findOne({ name: "小明" })
更新数据
db.students.updateOne({ name: "小明" }, { $set: { age: 22 } })
db.students.updateMany({ name: "小明" }, { $set: { age: 23 } })
删除数据
db.students.deleteOne({ name: "小明" })
db.students.deleteMany({ name: "小明" })

2. 索引

数据库中的一本“目录”。它可以帮助数据库快速找到需要的数据,而不用逐条扫描整个集合。

创建索引
db.students.createIndex({ name: 1 })
    查看索引
    db.students.getIndexes()
    删除索引
    db.students.dropIndex({ name: 1 })

    3、查询语言:

    查询过滤器:

     使用类似 JSON 的语法指定查询条件。支持等于、不等于、大于、小于、包含、正则表达式、逻辑运算符 ($and$or$not$nor) 等。

    db.collection.find({ age: { $gt: 25 }, city: "New York" }) // 年龄大于25且城市是纽约。

    投影: 

    指定返回文档中包含或排除哪些字段 ({ field: 1 } 包含, { field: 0 } 排除)。

    排序: 

    sort({ field: 1 }) (升序), sort({ field: -1 }) (降序)

     skip(n) 跳过前 n 个文档, limit(m) 限制返回 m 个文档。

    四、总结

    MongoDB 是一个功能强大、灵活且可扩展的现代 NoSQL 数据库。其文档模型、动态模式、高性能、高可用性和水平扩展能力使其非常适合处理现代应用程序中常见的非结构化/半结构化数据、快速迭代和高并发场景。深入理解其核心概念(文档、集合、数据库、BSON)、核心机制(索引、副本集、分片、聚合)、存储引擎(WiredTiger)、安全特性以及模式设计和性能优化最佳实践,是有效使用和管理 MongoDB 的关键。它并非万能,在选择时需要权衡其优势(灵活、扩展性)与限制(复杂 JOIN、事务成熟度)是否匹配应用需求。

    五、面试概率题

    (都给我去理解!!!理解!!!理解!!!重在理解!!!)不要死记硬背,能用自己话概述即可,说出自己的理解即可。每个人(包括ai)说法都不一样,但是大致意思,主要的部分都是一样的。自己摸索答案,博主上文写的都是常用操作,易上手的,面试理论直接问ai,自行搜索即可。仅限参考

    MongoDB

    1:如何批量插入数据?

    2:如何更新多个文档中的特定字段?

    3:如何删除所有满足特定条件的文档?

    4:如何创建一个复合索引?

    5:如何查看集合中的所有索引?

    6:如何删除一个索引?

    7:如何使用聚合管道计算每个组的平均值?

    8:如何对聚合结果进行排序?

    9:如何限制聚合结果的数量?

    10:如何初始化一个复制集?

    11:如何添加一个新成员到复制集?

    12:如何查看复制集的状态?

    13:如何设置一个分片集群?

    14:如何选择一个合适的分片键?

    15:如何迁移分片中的数据?

    16:如何创建一个具有特定权限的用户?

    17:如何启用数据加密?

    18:如何配置 MongoDB 绑定到特定的 IP 地址?

    19:如何使用 mongodump 创建一个备份?

    20:如何从备份中恢复数据?

    21:如何制定一个有效的备份策略?

    22:如何优化一个慢查询?

    23:如何选择合适的存储引擎?

    24:如何监控 MongoDB 的性能?

    评论
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
    红包 添加红包
    表情包 插入表情
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值