mongodb知识梳理

介绍:Mongo是非关系型数据库,是一个面向文档存储的数据库,操作简单和容易
Mongo里以集合对应mysql里的表,以文件对应mysql的表的一行记录,mongodb还支持对字段建立索引

|

数据类型描述
String字符串,存储数据常用的数据类型
Integer整型数值,用于存储数值
Boolean布尔值,用于存储布尔值
Double双精度浮点值,用于存储
Array用于将数组或列表或多个值存储为一个键
TimeStamp时间戳,记录文档修改或添加的具体
Object用于内嵌文档
Null用于创建空值
Object ID对象ID,用于创建文档的ID
Binary Data二进制数据,用于存储二进制数据
Date日期时间,用UNIX时间格式来存储当前日期或事件,

安装与集群搭建:
mongo与redis一样,启动时都是依据配置文件进行启动的
mongod:服务端命令
mongo :客户端命令
mongos :分片群集的控制器和查询路由器,分片和路由使用的

config.conf配置文件:

dbpath=./data  #数据文件存放位置
logpath=./logs/config.log # 日志文件存放路径
port=28017            #mongod服务使用的端口
bind_ip=0.0.0.0  #这里我设置公网ip启动报错,使用127.0.0.1外部又无法访问mongdb,设置为0.0.0.0这样外网就能访问了
logappend=true
maxConns=5000

启服务:

mongod -f config.conf

登陆:

mongo -port 28017

常用命令:

show dbs   #查看数据库列表
use databaseName #若databaseName数据库存在,连接该数据库,不存在新建数据库
db.stats() #统计数据库信息
db   #查看当前数据库
show roles #查看数据库用户角色权限
db.createCollection('要新建的表名')  #新建一个表
show collections    #查看当前数据库下的表
db.表名.drop()  #删除当前数据库指定表
db.dropDatabase():删除当前数据库

1:掺入数据:_id作为表里的数据的唯一标识
每插入一个数据时,若没有设置“_id”,mongodb会自动生成一个,可自己设置。

db.表名.insert(数据);表名没有时自动创建,对数据的插入会自动生成一个_id,若是插入重复时,会报错。

db.sss.insert("_id":1,"name":"wgg","age":"35");

db.表名.save(数据):表不存在时会创建,对重复的_id插入时不会报错,会覆盖之前的内容

db.sss.save({"_id":1,"name":"wgg","age":"38"});

2:查询数据
db.表名.find() :查询表中的所有数据
db.表名.find(条件) :按条件查询

db.sss.find({"name":"chen"});

db.表名.findOne :查询第一条

db.sss.findOne({"name":"chen"})

db.表名.find.limit(数量):限制数量
db.表名.find.skip(数量):跳过指定数量
db.collectionName.find().count():查询数量

db.sss.find().count();

3:修改数据:
db.表名.update({“条件字段名”:“字段值”},{$set:{“要修改的字段名”:“修改后的字段值”}})

db.sss.update({"name":"wgg"},{$set:{"age":"39"}});

4:删除数据
db.表名.remove(条件)

db.sss.remove({"_id":2});

mongodb集群搭建:
要存储的数据分在不同的分片服务器上,从而提高存储容量和提高服务器的并发性能
Replica Set:由一个Primary主节点,一个Arbiter仲裁节点,多个Secondary节点组成,主节点提供读写服务,Secondary一直从Primary节点同步数据,而Arbiter时不存储数据的,他是在主节点故障时,投票选出主节点的(就是一个主从结构外加Arbiter)。
Shard:分片服务器,用于存储实际的数据块,也可理解为是一个Replica Set,
Config Server :配置服务器,存储了整个分片集群的配置信息,包括chunk信息。
Routers :前端路由,客户端由此接入,且让整个集群看上去像单一数据库,前端应用可以透明使用

配置说明路由服务器配置服务器分片服务器(shard1)分片服务器(shard2)
127.0.0.1Port:27001Port:27002Port:27003
127.0.0.1Port:37001Port:37002Port:37003
127.0.0.1Port:27017Port:47001Port:47002Port:47004

注:此处ip为127.0.0.1,若想让外部能访问mongdb,可将127.0.0.1修改为0.0.0.0,

原理:外部通过路由服务器连接到集群,配置服务器则配置集群的相关属性,如数据块的大小(chunk),而分片服务器1,2则是我们通过路由服务器实际进行数据操作的地方。

步骤1:配置服务器config

dbpath=/data/mongodb/config //数据文件存放位置
logpath=/data/logs/config.log  //日志文件
port=27001  //端口号
bind_ip=127.0.0.1
logappend=true
fork=true #是否以后台的方式运行
maxConns=5000 
replSet=configs //很重要,这是复制集的名称
configsvr=true  //设置参数为true
mongod -f 27001.conf

启动三台配置服务器后,配置config服务器的复制集

mongo --host 127.0.0.1 --port 27001
config={_id:"configs",members:[{_id:0,host:"127.0.0.1:27001"},{_id:1,host:"127.0.0.1:37001"},{_id:2,host:"127.0.0.1:47001"}]}  //创建复制集
rs.initiate(config)        //初始化复制集
或者
rs.initiate()  //设置本机30.23.8.189为主节点
rs.add('127.0.0.1:37001')   //添加备份机
rs.add('127.0.0.1:47001')   //添加备份机
rs.status() //查看状态

步骤2:配置分片服务器

dbpath=/data/mongodb/shard1
logpath=/data/logs/shard1.log
port=27002
logappend=true
fork=true
maxConns=5000 
bind_ip=127.0.0.1
shardsvr=true
replSet=shard1 #很重要,分片路由器复制集的名称

启动三台服务器后,配置主节点、从节点、仲裁节点

mongo --host 127.0.0.1 --port 27002
rs.initiate()  //设置本机27002为主节点
rs.add('30.23.8.182:27001')   //添加备份机
rs.addArb('30.23.8.189:27001')   //添加仲裁节点
rs.status()

步骤3:同理配置第三台分片服务器,
复制集名称要改,端口,dbpath,logpath需要修改
然后配置主节点、从节点、仲裁节点

步骤4:配置路由服务器
1:配置文件

vim mongos.conf
logpath=/data/mongodb/logs/mongos.log
logappend = true
port = 27017
bind_ip=127.0.0.1
fork = true
configdb = configs/127.0.0.1:17001,127.0.0.1:27001,127.0.0.1:37001
maxConns=20000

启配置服务器用mongos不用mongod

mongs -f mongos.conf

启用分片功能:

mongo --host 127.0.0.1 --port 27017
mongos> use gateway
mongos> sh.addShard("shard1/127.0.0.1:27002,127.0.0.1:37002,127.0.0.1:47002")
mongos> sh.addShard("shard2/127.0.0.1:27003,127.0.0.1:37003,127.0.0.1:47003")
mongos> sh.status()    //查看群集状态
#此处为添加两台分片服务器,后续添加的也会均匀分配分片数据

相关属性配置:
设置分片chunk大小

mongos> use config
mongos> db.settings.save({"_id":"chunksize","value":1})

参考资料:
https://blog.51cto.com/13511191/2359959

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDB是一个开源的、跨平台的、面向文档的NoSQL数据库管理系统。它以JSON风格的文档存储数据,具有灵活的数据模型和强大的查询能力。以下是一些MongoDB知识点: 1. 数据模型:MongoDB使用BSON(二进制JSON)格式存储数据,可以存储复杂的数据结构,如嵌套文档和数组。每个文档都有一个唯一的_id字段作为主键。 2. 集合和文档:MongoDB将数据组织成集合(Collection),每个集合包含多个文档(Document)。文档类似于关系数据库中的行,但没有固定的模式。 3. 查询:MongoDB支持丰富的查询语法,包括比较、逻辑、正则表达式等操作符。可以使用find()方法进行查询,并可以使用索引来提高查询性能。 4. 索引:MongoDB支持创建索引来加速查询。常见的索引类型包括单字段索引、复合索引、文本索引等。可以使用ensureIndex()方法创建索引。 5. 聚合管道:MongoDB提供了聚合管道(Aggregation Pipeline)功能,可以对集合中的文档进行多阶段的数据处理和转换。 6. 复制和故障转移:MongoDB支持数据复制和故障转移,通过复制集(Replica Set)来提供数据的冗余和高可用性。 7. 分片:MongoDB支持数据分片(Sharding),可以将数据分散存储在多个服务器上,提高数据存储和查询的性能。 8. 安全性:MongoDB提供了访问控制、身份验证和加密等安全功能,可以保护数据的机密性和完整性。 以上只是MongoDB的一些基本知识点,还有更多高级的功能和特性可以进一步学习和探索。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值