作为一个数据库,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() = > 普通 jsprintjson() = > 格式化 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 > // 一定要选中数据库
MongoDB复制是将数据同步到多个服务器的过程;
复制集提供了数据的冗余备份并提高了数据的可用性,通常可以保证数据的安全性;
复制集还允许您从硬件故障和服务中断中恢复数据。
(1):什么是复制集?
保障数据的安全性
数据高可用性 (24*7)
灾难恢复
无需停机维护(如备份,重建索引,压缩)
分布式读取数据
副本集对应用层是透明的
(2):MongoDB复制基本结构:
基本的架构由3 台服务器组成,一个三成员的复制集,由三个有数据,或者两个有数据,一个作为仲裁者。一个主库:不存在arbiter结点时;
两个从库组成,主库宕机时,这两个从库都可以被选为主库。当主库宕机后, 两个从库都会进行竞选,其中一个变为主库,当原主库恢复后,作为从库加入当前的复制集群即可。