Mongo学习笔记
1、NoSQL(NoSQL = Not Only SQL),意即"不仅仅是SQL",指的是非关系型的数据库,用于超大规模数据的存储。
2、关系型数据库遵循ACID原则:A (Atomicity) 原子性(要么全部做完,要么都不做)、C (Consistency) 一致性(数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束,如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败)、I (Isolation) 独立性(并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响)、D (Durability) 持久性(一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失)
3、MongoDB是面向文档的NoSQL数据库,以JSON-like的二进制文档格式(BSON格式)存储数据。
每个文档可以有不同的结构和字段,文档内可嵌套数组、子文档等复杂结构,同一集合中的文档无需固定结构。
4、MongoDB的“动态模式”允许随时添加或删除字段,适合数据结构频繁变化的场景。
5、MongoDB使用类JavaScript 的查询语言(MQL),通过字段名直接访问文档属性,但缺乏JOIN操作,多文档关联需通过 $lookup 实现。
6、MongoDB 默认使用 B-Tree 索引,支持对文档任意字段建立索引,查询效率高。
7、MongoDB 是一种文档型数据库,由于它不限制数据量和数据类型,它是高容量环境下最合适的解决方案,适合内容管理系统、实时分析、物联网、社交媒体、缓存层(数据模型灵活,大规模数据处理)。
8、随着业务的复杂,我们会发现不同场景下对数据库的要求差异会很大:
一致性优先,选用关系型数据库。
高性能全文搜索,使用Elasticsearch。
非关键数据,读多写少,量大,选用列式存储,如ClickHouse
离线数据分析,Hive。
9、MongoDB使用集合(Collections)来组织文档(Documents),每个文档都是由键值对组成的。
数据库(Database):存储数据的容器,类似于关系型数据库中的数据库。
集合(Collection):数据库中的一个集合,类似于关系型数据库中的表。
文档(Document):集合中的一个数据记录,类似于关系型数据库中的行(row),以 BSON 格式存储。

10、MongoDB 数据类型

ObjectId 类似唯一主键,MongoDB 中存储的文档必须有一个 _id 键。这个键的值可以是任何类型的,默认是个 ObjectId 对象。
ObjectId 中保存了创建的时间戳,所以不需要为文档保存时间戳字段,可以通过 getTimestamp 函数来获取文档的创建时间
11、使用 mongosh 命令连接到 MongoDB 服务器(默认端口是27017):
mongosh --host
如:使用 testuser 用户进行身份验证连接
mongosh --host localhost --port 27017 -u "testuser" -p "password123" --authenticationDatabase "testdb"
标准 URI 连接语法:
mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]
如:使用用户名和密码连接到本地 MongoDB 实例:
mongodb://username:password@localhost/mydatabase
12、
浙公网安备 33010602011771号