官网手册:
The MongoDB 4.2 Manual — MongoDB Manual
MongoDB 存储的一条记录就是一个文档:
文档类型数据库优点:
版本新特性:
高性能:
水平伸缩:
zones的意思就是,规定那个访问的数据可以到那个shard里面去,上图的意思也就是每一个shard指定一个zone区域,每一个区域里面有一定的范围,符合访问的数据到对应的shard里面去,区域不能够重叠访问,也不能够共享访问。
- { "x" : 5 } --> { "x" : 10 } // Zone A
- { "x" : 10} --> { "x" : 20 } // Zone B
还有一种访问就是Hashed Shard Keys and Zone Ranges:
{ "x": NumberLong("4470791281878691347") } --> { "x": NumberLong("7766103514953448109") } // Zone A
支持多种 Storage Engines:
官网安装说明:
Install MongoDB Community Edition on Ubuntu — MongoDB Manual
关键的文件:
配置文件 | /etc/mongod.conf |
数据文件夹 | /var/lib/mongodb |
日志文件夹 | /var/log/mongodb |
查看database
db
创建一个数据库
use examples
下面创建一个 inventory 的数据 collection。
- db.inventory.insertMany([
- { item: "journal", qty: 25, status: "A", size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
- { item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
- { item: "paper", qty: 10, status: "D", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
- { 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" ] }
- ]);
-
- // MongoDB adds an _id field with an ObjectId value if the field is not present in the document
查询 document,下面相当于都是等值的操作
- db.inventory.find({})
- //格式化输出
- db.inventory.find({}).pretty()
- //条件查询
- db.inventory.find( { status: "D" } );
- db.inventory.find( { qty: 0 } );
- //下面相当于 and 操作
- db.inventory.find( { qty: 0, status: "D" } );
- //查询对象里面的数据
- db.inventory.find( { "size.uom": "in" } )
- //对象的 and 操作
- db.inventory.find( { size: { h: 14, w: 21, uom: "cm" } } )
- //数组查询
- db.inventory.find( { tags: [ "red", "blank" ] } )
- //表示数组里面包含了red就能够查询出来
- db.inventory.find( { tags: "red" } )
-
- //条件查询,后面的{}表示 select 选着值,1 表示要返回的值,0 表示不显示值
- db.inventory.find( { }, { item: 1, status: 1 } );
- //下面的条件表示 id 不返回
- db.inventory.find( {}, { _id: 0, item: 1, status: 1 } );