• 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  

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

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

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

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

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

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

    1. > use db1
    2. switched to db db1
    3. > load("/root/test.js")
    4. {
    5. "_id" : ObjectId("6329da7c5e81be318ba81363"),
    6. "id" : 1,
    7. "name" : "张三",
    8. "sex" : "男",
    9. "age" : 18
    10. }
    11. true
    12. >
    13. // 一定要选中数据库

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

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

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

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

    (1):什么是复制集?

            保障数据的安全性

            数据高可用性 (24*7)

            灾难恢复

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

            分布式读取数据

            副本集对应用层是透明的

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

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

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

            两个从库组成,主库宕机时,这两个从库都可以被选为主库。
            当主库宕机后, 两个从库都会进行竞选,其中一个变为主库,当原主库恢复后,作为从库加入当前的复制集群即可。
  • 相关阅读:
    Cypress(1)——如何安装及测试类型简要介绍
    NextJS开发:ssr服务器端渲染页面,添加加载进度提示
    分库分表的几个常见方面
    【发表案例】智能物联网类SCI&EI,仅25天录用,计算机领域必投SCI快刊,12月截稿
    调用API接口获取淘宝商品数据:实践指南与代码解析
    SSM《程序设计基础》课程答疑系统的设计与实现 毕业设计-附源码261620
    CIFAR-10 数据转为图片-python
    消息中间件-RocketMQ
    [计算机网络]套接字编程
    Docker入门
  • 原文地址:https://blog.csdn.net/AiTTTTTT/article/details/126960953