MongoDB 阶段一(安装&入门)

介绍

 官网手册:

The MongoDB 4.2 Manual — MongoDB Manual

MongoDB 存储的一条记录就是一个文档:

文档类型数据库优点:

  •  对于多种语言都有很好的支持。
  • 嵌套的文档数据减少了复杂的 join 操作,提高了性能。
  • 元数据可以动态的改变。

版本新特性:

  • MongoDB 3.4 支持只读视图功能。
  • MongoDB 4.2 开始支持物化视图。

高性能:

  • 对嵌入式数据模型的支持减少了数据库系统上的 I/O 活动。
  • 索引支持更快的查询,并且可以包括来自嵌入式文档和数组的键。

水平伸缩:

  • 在集群中使用了分片的机制。
  • 在3.4以后,MongoDB 支持创建在shard key上面创建zones来均衡集群里面的数据。

zones的意思就是,规定那个访问的数据可以到那个shard里面去,上图的意思也就是每一个shard指定一个zone区域,每一个区域里面有一定的范围,符合访问的数据到对应的shard里面去,区域不能够重叠访问,也不能够共享访问。 

{ "x" : 5 } --> { "x" : 10 } // Zone A
{ "x" : 10} --> { "x" : 20 } // Zone B
  • 如果一个文档的 shard key 的值为 7 那么它就会被路由到 zone (区域) A。
  • 如果一个文档的 shard key 的值为 10 那么它就会被路由到 zone (区域) B。

还有一种访问就是Hashed Shard Keys and Zone Ranges:

{ "x": NumberLong("4470791281878691347") } --> { "x": NumberLong("7766103514953448109") } // Zone A
  • 上面的这一种就是Shard Keys经过Hash运算之后得到的结果访问。 

支持多种 Storage Engines:

安装

官网安装说明:

Install MongoDB Community Edition on Ubuntu — MongoDB Manual

关键的文件:

配置文件/etc/mongod.conf
数据文件夹/var/lib/mongodb
日志文件夹/var/log/mongodb

使用

数据库操作

查看database

db

创建一个数据库

use examples

Collection操作

下面创建一个 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 } );

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

工作变成艺术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值