MongoDB--- 客户端操作 与 复制集

1.MongoDB执行js脚本

         作为一个数据库,MongoDB有一个很大的优势它使用js管理数据库,所以也能够使用js脚本进行复杂 的管理。

        mongodb 的shell是javascript实现的,如果直接使用js实现相应的功能则显得很直观和简便。比如我们对一些数据进行 统计计算,除了使用mapreduce之外,直接使用js也是很好的选择。还有一些批处理,数据同步都可以使用js。  

        使用js脚本进行交互的优点与缺点

                1)无需任何驱动或语言支持;

                2)方便cron或管理员定时任务;

                3)注意点:任然是数据格式的问题;

        js脚本一般会用来执行以下任务
                1)备份;
                2)调度map-reduce命令;
                3)离线报告,离线任务;
                4)管理员定时任务;

(1):mongodb shell 运行js脚本的四种方式

方法一: 1> 交互式 mongo shell  

mongo 
> use school 
switched to db school 
> db.student.findOne() 
{ "_id" : ObjectId("5f1f8bdab36301cb281efc06"), "id" : 101, "name" : "张三", "gender" : "M" }

方法二:不进入交互模式,直接在 OS 的命令行下运行一段mongodb脚本。

> show dbs
admin    0.000GB
config   0.000GB
db1      0.000GB
local    0.000GB
student  0.000GB
> use db1;
switched to db db1
> exit
bye
[root@manager ~]# mongo db1 --eval "printjson(db.student.findOne())"
MongoDB shell version v4.4.16
connecting to: mongodb://127.0.0.1:27017/db1?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("153bab25-60c1-49ce-bd9f-19a94ad716a2") }
MongoDB server version: 4.4.16
{
	"_id" : ObjectId("6329da7c5e81be318ba81363"),
	"id" : 1,
	"name" : "张三",
	"sex" : "男",
	"age" : 18
}
[root@manager ~]#
说明:
        通常使用两种方法打印获取到的结果:
        print() = > 普通 js
        printjson() = > 格式化 json 打印,打印出来的格式会漂亮许多

方法三:在OS命令下,运行一个js文件;

[root@manager ~]# vim test.js
[root@manager ~]# mongo db1 test.js
MongoDB shell version v4.4.16
connecting to: mongodb://127.0.0.1:27017/db1?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("44923f64-0fcc-4e78-8df4-07a46e830561") }
MongoDB server version: 4.4.16
{
	"_id" : ObjectId("6329da7c5e81be318ba81363"),
	"id" : 1,
	"name" : "张三",
	"sex" : "男",
	"age" : 18
}
[root@manager ~]# cat test.js 
printjson(db.student.findOne())
[root@manager ~]# 

方法四:在mongo shell模式下,运行js脚本:

> use db1
switched to db db1
> load("/root/test.js")
{
	"_id" : ObjectId("6329da7c5e81be318ba81363"),
	"id" : 1,
	"name" : "张三",
	"sex" : "男",
	"age" : 18
}
true
> 


// 一定要选中数据库

2.MongoDB复制集(主从复制) 

        MongoDB复制是将数据同步到多个服务器的过程;

        复制集提供了数据的冗余备份并提高了数据的可用性,通常可以保证数据的安全性;

        复制集还允许您从硬件故障和服务中断中恢复数据。

(1):什么是复制集?

        保障数据的安全性

        数据高可用性 (24*7)

        灾难恢复

        无需停机维护(如备份,重建索引,压缩)

        分布式读取数据

        副本集对应用层是透明的

(2):MongoDB复制基本结构:

        基本的架构由3 台服务器组成,一个三成员的复制集,由三个有数据,或者两个有数据,一个作为仲裁者。

       一个主库:不存在arbiter结点时;

        两个从库组成,主库宕机时,这两个从库都可以被选为主库。
        当主库宕机后, 两个从库都会进行竞选,其中一个变为主库,当原主库恢复后,作为从库加入当前的复制集群即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值