1,MongoDB是什么
MongoDB是一个文档数据库,设计目标是容易开发和扩展.
MongoDB中的记录是一种文档,它是由field:value键值对组成的数据结构。MongoDB文档类似于JSON对象。字段的值可能包括其他文档、数组和文档数组.
2,MongoDB的版本
MongoDB Community:
免费版本
MongoDB Enterprise:
是MongoDB Enterprise Advanced订阅的一部分,包含对MongoDB部署的全面支持。另外增加了侧重于企业的特性,如LDAP和Kerberos支持、磁盘加密和审计.
3,MongoDB和RMDB的隐射关系
MongoDB | RMDB |
---|
DB | DB |
Collection | Table |
Document | Row |
DB: 数据库保存一个或多个文档集合
Collection: MongoDB以集合的形式存储文档。集合类似于关系数据库中的表。
从3.6版本开始,集合被分配一个不可变的UUID。集合UUID在一个分片集群中的复制集和分片的所有成员之间保持相同。可以通过db.getCollectionInfos()方法查看UUID
4,MongoDB的主要特点
1.高性能
MongoDB 提供高性能数据持久化。特别是:
对嵌入式数据模型的支持减少了数据库系统上的 I/O 活动。
索引支持更快的查询,并且可以包含来自嵌入式文档和数组的键。
2.丰富的查询语言
MongoDB 支持丰富的查询语言来支持读写操作(CRUD)以及和数据聚合和文本搜索和地理空间查询。
3.高可用性
MongoDB 的复制工具,称为副本集,提供自动故障转移和数据冗余
4.水平可扩展性
MongoDB 提供水平可扩展性作为其核心功能的一部分:
在计算机集群分布分片数据。
从 3.4 开始,MongoDB 支持基于shard key创建数据区域。在平衡集群中,MongoDB 将区域覆盖的读取和写入仅定向到区域内的那些分片。
5.支持多个存储引擎
WiredTiger 存储引擎(包括对静态加密的支持 )
内存存储引擎
5,MongoDB web shell
https://mws.mongodb.com/?version=5.0
# 查看当前db
db;
# 切换数据库,如果数据库不存在,会自动创建
use db_name;
# 插入文档,如果文档没有_id字段,会自动添加一个;如果集合不存在,会自动创建集合.
db.inventory.insertMany([
{ item: "planner", qty: 0, status: "D", size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
{ item: "postcard", qty: 45, status: "A", size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
]);
# 查询集合所有文档
db.inventory.find({});
db.inventory.find({}).pretty(); # 格式化结果
# 指定返回的字段
# 返回_id,item,status字段,_id字段默认会返回的
db.inventory.find( { }, { item: 1, status: 1 } );
# 返回item,status
db.inventory.find( {}, { _id: 0, item: 1, status: 1 } );