MongoDB学习

以前学的,现在分享出来,后面有一些没写,有时间再补了。

第一章 NoSql简介
NoSql:Not Only Sql,指非关系型数据库,用于超大规模数据的存储


特点:
1.    代表着不仅仅是sql
2.    没有声明性的查询语言
3.    没有预定的模式
4.    键/值对存储,列存储,文档存储,图形数据库
5.    最终一致性,而不是ACID属性
6.    非结构化和不可预知的属性
7.    CAP定理
8.    高性能、高可用性和可伸缩性


NoSql简史:NoSql一词最早出现在1998年,是Carlo Strozzi开发的一个轻量级、开源、不提供sql功能的关系型数据库
2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSql主要指非关系型、分布式、不提供ACID的数据库的设计模式 <br>2009年在亚特兰大举行的"no:sql(east)"讨论会是一个里程碑,其口号是"select fun, profit from real_world where relational=false;"。  <br>因此,对NoSql最普遍的解释是:非关系型的,强调Key-Value Stores和文档数据库的优点,而不是单纯的但对ACID.
第二章 MongoDB安装
  1. 在开源中国下找到MongoDB的下载路径,下载安装
  2. 在dos下启动MongoDB,定义dbpath. D:\MongoDB\bin>mongod –logpath D:\MongoDB\logs\MongoDB.log –logappend
    –dbpath D:\MongoDB\data –directoryperdb –serviceName MongoDB –install
  3. 另启dos,通过mongo命令进入mongodb, :mongo 10.3.19.31:62167/test -user -pwd
第三章 MongoDB的概念
SQLMongoDB说明
databasedatabase数据库
tablecollection数据库表/集合
rowdocument数据行/文档
columnfield数据列/属性
indexindex索引
table joins表连接,MongoDB不支持
primary keyprimary key主键。MongoDB会自动创建名为_id的主键

数据库

一个mongodb可以有多个数据库,默认数据库为db,存储在data目录下
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的数据库也放置在不同的文件中。
查看数据库 “show dbs”
显示当前数据库对象或集合 “db”
切换数据库 “use dataBaseName

数据库命名规范;
1. 不能是空字符串(“”)
2. 不能含有空格、.、$、/、\和\0(空字符)
3. 应全部小写
4. 最多64个字节

保留数据库:
* admin:拥有所有的数据库权限
* local:这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
* config:当mongo用于分片设置时,config数据库内在内部使用,用于保存分片的相关信息


文档

文档对应RDBMS中的数据行
文档是一个键值对(bson)。MongoDB的文档不需要设置相同的字段,也不需要相同的数据类型。

RDBMSMongoDB
数据库数据库
表格集合
文档
字段
表联合嵌入文档
主键主键(MongoDB提供了key为_id的主键)


数据库服务和客户端
Mysqld/Oracle mongod
mysql/sqlplus mongo

注意点:
1. 文档中的键值对是有序的
2. 文档中的值不仅可以是在双引号之中的值,还可以是其他的数据类型(甚至可以是嵌入整个文档)
3. MongoDB区分类型和大小写
4. MongoDB的文档键值不能重复(两个属性不能重名)
5. 文档的键是字符串。除了少数情况,键名可以是任意的UTF-8字符

文档键的命名规范:
1. 不能包含\0(空字符),这个字符用来表示键的结尾
2. “.”和$有特殊意义,只能在特殊情况下使用
3. 以下划线开头的名字是保留的(非严格的)


集合

集合是MongoDB中的文档组,对应RDBMS中的数据表格
集合存在于数据库中,没有固定的结构,可以插入不同格式和类型的数据,通常情况下,插入的数据会有一定的关联性
当第一个文档被插入时,集合就会被创建(集合是文档的容器)

集合命名规范:
* 不能是空字符串””
* 不能包含\0
* 不能以”system.”开头,为系统集合保留
* 用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建的集合,否则千万不要在名字里出现$

capped collections

固定大小的集合
capped collections是高性能的自动维护对象的插入顺序。非常适合类似日志记录的功能
与collection(在插入第一条文档时,会自动创建的那种)不同,必须显示创建一个capped collections,指定集合的大小,单位是字节。collection的数据存储空间是提前分配的。eq:db.createCollection(“asd”,{capped=true,size=10000})

注意点:
1. 可以向集合中添加新的数据,如果空间都被使用完毕,新添加的对象会取代最旧的那个数据
2. 可以更新,但是不能增加存储空间,若增加了,则会更新失败
3. 数据库不允许进行删除单个文档,只能使用drop()删除这个collection的所有行
4. 删除之后,如果想再次使用,必须显示的重新创建这个collection。
5. 在32bit机器中,capped collection最大存储为1e9( 1X109)个字节。


未完待续!!!

大家这么喜欢,我就不要资源分了,改成0分了,我为我一己私利感到抱歉…… MongoDB学习手册 ......................................................................................................................... 1 说明.......................................................................................................................................... 2 一、 Mongodb简介 .......................................................................................................... 4 二、 MongoDB特性 ......................................................................................................... 5 适用场景: ....................................................................................................................... 5 不适用场景: ................................................................................................................... 6 三、 MongoDB的工作方式.............................................................................................. 6 四、 MongoDB的下载 ..................................................................................................... 8 五、 MongoDB的安装 ..................................................................................................... 9 六、 MongoDB数据类型................................................................................................ 12 1. Timestamp类型 ...................................................................................................... 12 2. ObjectId类型 .......................................................................................................... 12 3. 数据库关联 ............................................................................................................. 14 七、 GridFS文件系统 ..................................................................................................... 15 八、 索引 ......................................................................................................................... 16 九、 主(Master)/从(slave)数据库同步 ................................................................ 20 1. 建立主/从服务器 ................................................................................................... 20 2. 相关参数说明 ......................................................................................................... 21 3. Slave顶替Master ................................................................................................... 22 4. 切换Master/Slave角色 ......................................................................................... 22 5. 更新主服务器位置 ................................................................................................. 22 十、 MongoDB分片和集群............................................................................................ 24 1. 简单分片实例 ......................................................................................................... 24 2. 高级分片实例 ......................................................................................................... 29 十一、 数据库基本操作:增查删改 ............................................................................. 37 1. Insert ....................................................................................................................... 37 2. Query ....................................................................................................................... 38 3. Remove.................................................................................................................... 52 4. Update ..................................................................................................................... 53 十二、 Shell控制台 ........................................................................................................ 62 1. 执行.js文件 ............................................................................................................ 62 2. –eval ........................................................................................................................ 62 3. 脚本和互动的区别 ................................................................................................. 62 十三、 安全与认证 ......................................................................................................... 63 1) 开启安全认证 ......................................................................................................... 63 2) 添加用户 ................................................................................................................. 64 3) 认证 ......................................................................................................................... 64
<think> 嗯,用户明确表示需要MongoDB学习资料和方法,看来ta正在入门或者想系统学习这个数据库。从用户提问的简洁程度看,可能是个新手,不太清楚具体需要哪些资源,需要引导。 之前提供的引用材料挺全的,但需要整理得更友好。引用1提到MongoDB基础操作、系统管理等完整学习路径;引用2给出了具体的学习资料列表,包括入门到进阶的11个主题;引用3则提供了SQL到MongoDB的语法对照链接——这些正好能组成体系化学习方案。 用户可能更关注如何快速上手,所以要把资料按学习阶段分层。第一阶段应该优先文档基本操作,特别是SQL用户最关心的CRUD语法转换(这里引用3的SQL对照表特别有用);第二阶段再深入索引、聚合这些进阶内容;最后才是复制分片等运维知识。这样阶梯式推进比较符合认知规律。 考虑到中文用户的需求,特意补充了中文教程资源。官方文档虽然权威但英文可能造成障碍,所以把中文社区和视频教程放在显眼位置。性能优化和模式设计这类实战内容单独作为第四阶段,因为用户实际使用时最容易卡在这些地方。 最后用思维导图总结学习路径是点睛之笔。用户可能面临信息过载,用图形化方式呈现“基础→核心→高级→实战”四个阶段,能帮ta建立全局认知。每个阶段的关键词(集合/索引/聚合等)都来自引用材料里的核心概念,确保准确性。 要不要提醒用户先装环境呢?不过资料推荐里已经包含官方快速入门,应该足够。如果用户后续追问安装问题再补充也不迟。 </think>根据您的需求,以下是系统化的MongoDB学习路径和精选资源,结合官方文档与实战教程: --- ### **一、分阶段学习路径** #### **第一阶段:基础概念** 1. **核心概念** - **文档(Document)**:类JSON的BSON格式数据单元(例:`{ name: "Alice", age: 25 }`) - **集合(Collection)**:文档的容器(类似SQL表) - **数据库(Database)**:集合的物理分组 > 参考官方文档:[MongoDB Glossary](https://www.mongodb.com/docs/manual/reference/glossary/) [^1] 2. **数据类型** 对比SQL与MongoDB数据类型映射: | SQL | MongoDB | 示例 | |-----------|------------|-----------------------| | INT | int32 | `age: 25` | | VARCHAR | string | `name: "Alice"` | | DATETIME | Date | `created: ISODate()` | #### **第二阶段:核心操作** 1. **CRUD操作**([SQL对比指南](https://www.mongodb.com/docs/manual/reference/sql-comparison/) [^3]) ```javascript // 插入文档 db.users.insertOne({name: "Bob", role: "admin"}) // 查询带条件 db.users.find({age: {$gt: 20}}) // 更新字段 db.users.updateOne({name: "Bob"}, {$set: {status: "active"}}) ``` 2. **聚合框架**([SQL聚合对比](https://www.mongodb.com/docs/manual/reference/sql-aggregation-comparison/) [^3]) ```javascript // 统计各角色用户数 (类比SQL: SELECT role, COUNT(*) FROM users GROUP BY role) db.users.aggregate([ { $group: { _id: "$role", count: { $sum: 1 } } } ]) ``` #### **第三阶段:进阶优化** 1. **索引优化** - 创建索引:`db.users.createIndex({email: 1})` - 索引类型:单字段、复合、文本、地理空间等 > 性能影响:[索引策略指南](https://www.mongodb.com/docs/manual/applications/indexes/) [^1] 2. **模式设计** - 嵌入式文档 vs 引用式关联 - 分桶模式(Bucket Pattern)处理时序数据 #### **第四阶段:高可用与扩展** 1. **复制集(Replica Set)** - 自动故障转移:1个Primary + N个Secondary - 数据冗余:异步复制 2. **分片(Sharding)** - 水平扩展:按分片键(如`user_id`)分布数据 - 集群组件:Mongos、Config Server、Shard --- ### **二、精选学习资源** 1. **官方文档** - [MongoDB中文手册](https://www.mongodb.com/docs/manual/):最权威的入门到进阶指南 [^1] - 交互式教程:[MongoDB University](https://learn.mongodb.com/)(免费课程) 2. **中文实战教程** - [《MongoDB实战精解》](https://item.jd.com/12693972.html):模式设计+性能优化案例 - 视频课程:[B站MongoDB大师课](https://www.bilibili.com/video/BV18f4y1R7pk)(索引与集群配置演示) 3. **工具与社区** - 图形化工具:[MongoDB Compass](https://www.mongodb.com/products/compass) - 问题解决:[Stack Overflow MongoDB板块](https://stackoverflow.com/questions/tagged/mongodb) --- ### **三、学习建议流程** ```mermaid graph LR A[基础概念] --> B[CRUD操作] B --> C[聚合管道] C --> D[索引优化] D --> E[模式设计] E --> F[复制集/分片] ``` > 提示:先通过官方交互教程实践基础操作,再结合项目需求深入学习特定模块[^2][^3]。 --- ### 常见问题解答 **Q:如何快速迁移SQL数据到MongoDB?** A:使用`mongoimport`工具或[数据迁移指南](https://www.mongodb.com/docs/database-tools/mongoimport/) **Q:事务支持如何?** A:v4.0+支持多文档ACID事务,但需注意性能影响(参考[事务文档](https://www.mongodb.com/docs/manual/core/transactions/)) ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值