MongoDB 学习指南与资料分享


MongoDB学习资料

MongoDB学习资料

MongoDB学习资料


在数据爆炸的当下,MongoDB 作为非关系型数据库的佼佼者,以其独特优势在各领域发光发热。无论是海量数据的存储,还是复杂数据结构的处理,MongoDB 都能轻松应对。接下来,让我们一同深入探索 MongoDB 的学习路径,并分享一些实用的学习资料。

学习指南

入门基础

核心概念掌握

MongoDB 基于分布式文件存储,采用文档型数据模型。它将数据以 BSON(Binary JSON)格式存储,与传统关系型数据库的表格形式大相径庭。例如,一个简单的用户信息文档可表示为:

{"name": "李四","age": 28,"email": "lisi@example.com","hobbies": ["reading", "swimming"]
}

这种灵活的数据模型,让开发者无需花费大量精力在复杂的表结构设计与范式化处理上,可根据业务需求自由调整数据结构。

环境搭建

下载安装:前往 MongoDB 官方网站(https://www.mongodb.com/try/download/community),根据操作系统版本下载对应的安装包。Windows 用户按安装向导完成安装,注意安装路径与配置选项,如是否将其安装为系统服务。Linux 和 macOS 用户可通过包管理器安装,以 Ubuntu 为例,在终端执行:

sudo apt-get update
sudo apt-get install -y mongodb-community

启动服务:安装完成后,启动 MongoDB 服务。Windows 用户可在服务管理器中找到 “MongoDB” 服务并启动;Linux 和 macOS 用户在终端执行:

sudo systemctl start mongod

连接数据库:MongoDB 提供 “mongo” 交互式 shell 用于与数据库交互。在命令行输入 “mongo”,即可连接本地 MongoDB 实例,连接成功后会出现命令行提示符,此时便可输入各种 MongoDB 命令进行操作。

基础进阶

数据操作

数据库与集合管理:

创建与选择:使用 “use” 命令创建或选择数据库。例如,要创建或切换到 “my_project_db” 数据库,执行:

use my_project_db

集合操作:集合类似关系型数据库的表,用于存储文档。使用 “db.createCollection ()” 方法创建集合,如创建名为 “products” 的集合:

db.createCollection("products")

创建后,可通过 “db.collectionName” 引用,如 “db.products”。还可对集合进行重命名、删除等操作,如重命名

db.products.renameCollection ('new_products')

删除

db.products.drop ()

文档操作:

插入:“insertOne ()” 插入单个文档,“insertMany ()” 插入多个文档。向 “products” 集合插入一个产品文档:

db.products.insertOne({"product_name": "Laptop","price": 1200,"category": "Electronics"
})

插入多个文档:

db.products.insertMany([{"product_name": "Mouse","price": 20,"category": "Computer Accessories"},{"product_name": "Keyboard","price": 50,"category": "Computer Accessories"}
])

查询:使用 “find ()” 方法查询文档。查询 “products” 集合所有文档:

db.products.find()

查询价格大于 50 的产品:

db.products.find({ "price": { "$gt": 50 } })

更新:“updateOne ()” 更新单个文档,“updateMany ()” 更新多个文档。将 “Laptop” 的价格更新为 1300:

db.products.updateOne({ "product_name": "Laptop" }, { "$set": { "price": 1300 } })

删除:“deleteOne ()” 删除单个文档,“deleteMany ()” 删除多个文档。删除价格小于 30 的产品:

db.products.deleteMany({ "price": { "$lt": 30 } })

高级提升

性能优化

索引优化:索引能极大提升查询性能。使用 “createIndex ()” 方法创建索引,如为 “products” 集合的 “category” 字段创建单字段索引:

db.products.createIndex({ "category": 1 })

除单字段索引,还支持复合索引、多键索引等。例如,为 “products” 集合的 “category” 和 “price” 字段创建复合索引:

db.products.createIndex({ "category": 1, "price": -1 })

创建索引时需根据实际查询场景设计,避免过多索引影响写入性能。
聚合框架:聚合框架用于复杂数据处理与分析,通过 “aggregate ()” 方法及一系列管道操作符实现。例如,统计 “products” 集合中每个类别的产品数量:

db.products.aggregate([{"$group": {"_id": "$category","count": { "$sum": 1 }}}
])

复制集:复制集保障高可用性与数据冗余。由一组 MongoDB 实例组成,一个主节点,多个从节点。主节点处理写入操作,并同步日志到从节点,从节点可分担读取负载。创建复制集需在多个节点启动 MongoDB 实例,并配置为成员,然后在其中一个节点执行初始化命令。例如:

rs.initiate({_id: "my_repl_set",members: [{ _id: 0, host: "node1:27017" },{ _id: 1, host: "node2:27017" },{ _id: 2, host: "node3:27017" }]
})

实战要点

数据建模

依据业务需求与数据特点设计数据结构。以电商项目为例,将商品基本信息、库存、评论等存储在一个文档中,利用嵌套文档与数组功能,减少数据冗余与复杂关联查询。同时,预留扩展空间,方便业务拓展时添加新字段与功能。

性能优化

除创建索引外,优化查询语句,尽量使用覆盖索引减少数据扫描范围。合理设置 MongoDB 的缓存大小、线程池大小等参数,充分利用服务器资源。定期进行碎片整理与性能监控,及时发现并解决性能问题。
数据安全

启用身份验证,设置访问控制列表(ACL)保护数据库。用户需提供用户名和密码连接数据库,并为不同用户分配不同权限,如只读、读写权限等。定期进行数据备份,并将备份数据存储在安全位置,防止数据丢失。

资料分享

书籍推荐

《MongoDB 实战》:本书深入介绍 MongoDB 的核心概念与操作,通过大量示例展示如何在实际项目中使用 MongoDB 进行数据存储、查询、管理等,适合初学者快速入门并掌握基础应用。

《MongoDB 权威指南》:内容全面且深入,涵盖 MongoDB 的架构、高级特性、性能优化、复制集与分片等内容,对有一定基础的开发者进一步提升技能很有帮助。

在线课程

Coursera - MongoDB for Developers:由专业讲师授课,系统讲解 MongoDB 的基础与高级知识,结合实际案例与编程练习,帮助学习者深入理解并掌握 MongoDB 开发技能。

网易云课堂 - MongoDB 从入门到精通:课程内容丰富,从环境搭建开始,逐步深入数据操作、索引、聚合等核心内容,适合不同基础的学习者全面掌握 MongoDB 技术。

优质网站

MongoDB 官方文档:https://docs.mongodb.com/,最权威的学习资料,涵盖从基础概念到高级特性的所有内容,包含详细的操作指南与代码示例,是学习 MongoDB 的首选资料。

Stack Overflow:https://stackoverflow.com/,在 MongoDB 相关问题板块,有大量开发者分享的问题与解决方案,能帮助学习者解决学习和实践中遇到的各种难题。

MongoDB 中文社区:https://www.mongodb.com.cn/,提供丰富的 MongoDB 技术文章、教程、案例分享,还有活跃的社区交流氛围,方便学习者交流学习心得与经验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/3812.html

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

相关文章

Excel 技巧10 - 如何检查输入重复数据(★★)

本文讲了如何在Excel中通过COUNTIF来检查输入重复数据。 当输入重复数据时,显示错误提示。 1,通过COUNTIF来检查输入重复数据 比如下面是想检查不要输入重复的学号。 选中C列,点 Menu > 数据 > 数据验证 在数据验证页面&#xff0c…

【Linux系统】Ext系列磁盘文件系统二:引入文件系统(续篇)

inode 和 block 的映射 该博文中有详细解释:【Linux系统】inode 和 block 的映射原理 目录与文件名 这里有几个问题: 问题一: 我们访问文件,都是用的文件名,没用过 inode 号啊? 之前总是说可以通过一个…

[计算机网络]一. 计算机网络概论第一部分

作者申明&#xff1a;作者所有文章借助了各个渠道的图片视频以及资料&#xff0c;在此致谢。作者所有文章不用于盈利&#xff0c;只是用于个人学习。 1.0推荐动画 【网络】半小时看懂<计算机网络>_哔哩哔哩_bilibili 1.1计算机网络在信息时代的作用 在当今信息时代&…

Python操作Excel——openpyxl使用笔记(2)

2. 操作工作表 前面提到一个工作簿中会有一个或者多个工作表&#xff0c;当前使用的工作表被称作活动工作表&#xff0c;这里展开介绍一下对于工作表的一些操作。 2.1 枚举所有工作表 使用for循环可以很方便的遍历每个工作表&#xff1a; import openpyxl wb openpyxl.o…

Social LSTM:Human Trajectory Prediction in Crowded Spaces | 文献翻译

概要 行人遵循不同轨迹以避免障碍物和容纳同行者。任何在这种场景中巡航的自动驾驶车辆都需要能够遇见行人的未来位置并相应地调整其路线以避免碰撞。轨迹预测问题能够被看作一个顺序生成任务&#xff0c;其中我们对基于行人过去的位置预测其未来的轨迹感兴趣。根据最近RNN&am…

从零开始:Gitee 仓库创建与 Git 配置指南

引言 Git 是一款广泛使用的版本控制工具&#xff0c;它能够帮助开发者在开发过程中高效地管理代码的版本。而 Gitee&#xff08;码云&#xff09;是国内知名的 Git 托管平台&#xff0c;它提供了强大的代码托管、团队协作和项目管理功能。如果你是 Git 和 Gitee 的新手&#x…

挖掘机检测数据集,准确识别率91.0%,4327张原始图片,支持YOLO,COCO JSON,PASICAL VOC XML等多种格式标注

挖掘机检测数据集&#xff0c;准确识别率91.0%&#xff0c;4327张图片&#xff0c;支持YOLO&#xff0c;COCO JSON&#xff0c;PASICAL VOC XML等多种格式标注 数据集详情 数据集分割 训练组70&#xff05; 3022图片 有效集20&#xff05; 870图片 测试集10&…

CV 图像处理基础笔记大全(超全版哦~)!!!

一、图像的数字化表示 像素 数字图像由众多像素组成&#xff0c;是图像的基本构成单位。在灰度图像中&#xff0c;一个像素用一个数值表示其亮度&#xff0c;通常 8 位存储&#xff0c;取值范围 0 - 255&#xff0c;0 为纯黑&#xff0c;255 为纯白。例如&#xff0c;一幅简单的…

QT 使用QTableView读取数据库数据,表格分页,跳转,导出,过滤功能

文章目录 效果图概述功能点代码分析导航栏表格更新视图表格导出表格过滤 总结 效果图 概述 本案例用于对数据库中的数据进行显示等其他操作。数据库的映射&#xff0c;插入等功能看此博客框架&#xff1a;数据模型使用QSqlTableModel&#xff0c;视图使用QTableView&#xff0…

UI自动化测试:异常截图和page_source

自动化测试过程中&#xff0c;是否遇到过脚本执行中途出错却不知道原因的情况&#xff1f;测试人员面临的不仅是问题的复现&#xff0c;还有对错误的快速定位和分析。而异常截图与页面源码&#xff08;Page Source&#xff09;的结合&#xff0c;正是解决这一难题的利器。 在实…

Spark常见面试题-部分待更新

1. 简述hadoop 和 spark 的不同点&#xff08;为什么spark更快&#xff09; Hadoop是一个分布式管理、存储、计算的生态系统&#xff0c;包括HDFS&#xff08;分布式文件系统&#xff09;、MapReduce&#xff08;计算引擎&#xff09;和YARN&#xff08;资源调度器&#xff09;…

HackMyVM-Klim靶机的测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Getshell 3、提权 CVE-2008-0166 四、结论 一、测试环境 1、系统环境 渗透机&#xff1a;kali2021.1(192.168.159.127) 靶 机&#xff1a;debian(192.168.159.27) 注意事…

数据结构题目 课时6

题目 1、设一棵树的度是 4&#xff0c;其中度为 0, 1, 2, 3, 4 的结点个数分别是 8, 4, 2, 1 和&#xff08; &#xff09;。 A. 4 B. 3 C. 2 D. 1 2、设一棵 m 叉树中有 N₁个度数为 1 的结点&#xff0c;N₂个度数为 2 的结点&#xff0c;……&#xff0c;Nₘ个度…

Linux下源码编译安装Nginx1.24及服务脚本实战

1、下载Nginx [rootlocalhost ~]# wget -c https://nginx.org/download/nginx-1.24.0.tar.gz2、解压 [rootlocalhost ~]# tar xf nginx-1.24.0.tar.gz -C /usr/local/src/3、安装依赖 [rootlocalhost ~]# yum install gcc gcc-c make pcre-devel openssl-devel -y4、 准备 N…

Web前端------表单标签

一.表单标签介绍 1.认识表单 表单---类似于日常生活中的申请单 都是去填写一些信息去申请某个功能&#xff0c;例如&#xff1a;账号密码昵称&#xff0c;登陆网站 2.常见标签 常见的标签 <form></form> 表单标签&#xff0c;所有表单信息都包含在这个标签内…

LLM - 大模型 ScallingLaws 的迁移学习与混合训练(PLM) 教程(3)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/145212097 免责声明&#xff1a;本文来源于个人知识与公开资料&#xff0c;仅用于学术交流&#xff0c;欢迎讨论&#xff0c;不支持转载。 Scalin…

Unity2017 控制.abc格式的三维动画播放

首先需要导入插件Alembic&#xff0c;否则导入abc动画&#xff0c;Unity是不会识别的。 Unity2017版本及以下直接从我这儿下载&#xff1a;https://download.csdn.net/download/qq_41603955/90272382 高版本Unity&#xff0c;请移步AssetStore商店搜找。 导入abc之后&#x…

【视觉惯性SLAM:十七、ORB-SLAM3 中的跟踪流程】

17.1 跟踪流程流程图 ORB-SLAM3 的跟踪模块是整个系统的重要组成部分&#xff0c;负责实时确定相机在三维空间中的姿态位置&#xff0c;并保持关键帧之间的连续性。其基本目标是将输入的视频流与已有地图数据进行对齐&#xff0c;完成位姿估计和地图更新。 流程图概述 一个…

开发神器之cursor

文章目录 cursor简介主要特点 下载cursor页面的简单介绍切换大模型指定ai学习的文件指定特定的代码喂给ai创建项目框架文件 cursor简介 Cursor 是一款专为开发者设计的智能代码编辑器&#xff0c;集成了先进的 AI 技术&#xff0c;旨在提升编程效率。以下是其主要特点和功能&a…

CSRF攻击XSS攻击

概述 ​在 HTML 中&#xff0c;<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址&#xff0c;而所谓的跨域请求就是指&#xff1a;当前发起请求的域与该请求指向的资源所在的域不一样。这里的域指…