美文网首页
MongoDB总结

MongoDB总结

作者: 二矢二 | 来源:发表于2018-12-30 18:42 被阅读0次

    首先我们先了解下什么是MongoDB ?

    MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在大量数据下,承载性能好。

    MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

    它和MySQL的区别吗呐在于

               mongodb:

                                    优点:    非关系型的数据库。

                                                相对于mysql来说,它不需要提前创建表,以及表结构,为我们省                                                去了很多的不便

                                                存储持久化,面向集合存储;易存储对象类型的数据。

                                                性能方面能够快速查询( 支持动态查询,完全索引。)

                                                json格式存储。

                                     缺点:   MongoDB占用空间过大 。

                                                因为他是非关系型,所以关系能力比较薄弱。

               mysql:

                                    优点: 关系型数据库。

                                               不同的引擎有不同的存储方法。

                                               有较为成熟健全的体系。

                                   缺点:  在海量数据进行查询的时候性能效率慢。

                                               在创建数据库,表的时候比较费时,特别是在创建表的时候设定                                                  的字段需要特别注意。

                                               查询数据信息的时候,有的语法较为复杂,费时。

    接下来总结性的mongodb的语法:

    Linux(Ubuntu16.04)

    启动 MongoDB :

    sudo   service    mongod   start

    创建数据库:

    use database_name

    注:(如果数据库不存在,则创建数据库,否则切换到指定数据库)

    删除数据库:

    db.dropDatabase()

    查看所有数据库:

    show dbs

    MongoDB 创建集合:

    db.createCollection()

    MongoDB 删除集合:

    db.collection.drop()

    MongoDB 插入文档:

    db.COLLECTION_NAME.insert(document)

    MongoDB 更新文档:

    db.collection.update()

    MongoDB 删除文档:

    db.collection.remove()

    MongoDB 查询文档:

    db.collection.find()

    MongoDB AND 条件:

    >db.col.find({key1:value1, key2:value2}).pretty()

    注:(MongoDB 的 find() 方法可以传入多个键(key),每个键(key)以逗号隔开,即常规 SQL 的 AND 条件)

    MongoDB OR 条件:

    MongoDB OR 条件语句使用了关键字 $or,

    db.col.find({$or:[{"by":"肖申克的救赎"},{"title": "人性/现实"}]}).pretty()

    MongoDB 条件操作符:

    作用:条件操作符用于比较两个表达式并从mongoDB集合中获取数据。

    (>) 大于 - $gt

    (<) 小于 - $lt

    (>=) 大于等于 - $gte

    (<= ) 小于等于 - $lte

    大于操作符 - $gt:

    db.col.find({likes : {$gt : 100}})

    大于等于操作符 - $gte:

    db.col.find({likes : {$gte : 100}})

    小于操作符 - $lt:

    db.col.find({likes : {$lt : 150}})

    小于操作符 - $lte:

    db.col.find({likes : {$lte : 150}})

    使用 (小于) 和 (大于) 查询 - $lt 和 $gt:

    db.col.find({likes : {$lt :200, $gt : 100}})

    MongoDB Limit() 方法:

    作用:指定从MongoDB中读取的记录条数

    db.collection_name.find().limit(number)

    MongoDB Skip() 方法:

    作用:跳过指定数量的数据

    db.collection_name.find().limit(number).skip(number)

    MongoDB 排序sort() 方法:

    作用:  用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

    db.collection_name.find().sort({key:1(-1)})

    MongoDB 索引  createIndex() 方法:

    db.col.createIndex({"title":1})

    注:   语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1。

    MongoDB 聚合:

    作用:   聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

    db.collection_name.aggregate(aggregate_operation)

    MongoDB 备份(mongodump)

    在Mongodb中我们使用mongodump命令来备份MongoDB数据。该命令可以导出所有数据到指定目录中。

    mongodump -h dbhost -d dbname -o dbdirectory

    -h:MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017

    -d:需要备份的数据库实例,例如:test

    -o:备份的数据存放位置,例如:c:\data\dump,当然该目录需要提前建立,在备份完成后,系统自动在dump目录下建立一个test目录,这个目录里面存放该数据库实例的备份数据

    如果没有开启权限

    mongodump -h 127.0.0.1:27017 -d 数据库名称 -o ~/Desktop/数据库备份的路径

    mongodump -h 127.0.0.1:27017 -o ~/Desktop/数据库备份的路径

    如果开启了权限设置(使用超级管理员权限)

    我们也可以使用账号密码的方式备份指定用户的数据库

    设置了超级管理员也可以使用如下方法备份

    mongodump -u username -p password --authenticationDatabase 'admin' -d dbname -o dbpath

    恢复备份

    mongodb使用 mongorestore 命令来恢复备份的数据。

    mongorestore -h hostname:port -d dbname  --dir path

    -h (host):MongoDB所在服务器地址,默认为: localhost:27017

    -d (db):需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2

    --dir:指定备份的目录

    如果没有开启权限

    mongorestore -h 127.0.0.1:27017 -d 数据库名称 --dir 数据库备份文件路径

    mongorestore -h 127.0.0.1 -dir 数据库备份文件路径

    下面是我添加了管理员权限之后的备份命令

    如果开启了权限设置(使用超级管理员权限)

    mongorestore -u username -p password --authenticationDatabase 'admin' -d 数据库名称 --dir 数据库备份文件路径


    MongoDB数据导入与导出

    导出工具:mongoexport

    mongoexport -d dbname -c collectionname -o file --type json/csv -f field

    参数说明:

    d :数据库名

    c :collection名

    o :输出的文件名

    -type : 输出的格式,默认为json

    f :输出的字段,如果-type为csv,则需要加上-f "字段名"

    示例

    导出json

    mongoexport -d class1804 -c books -o ~/桌面/dump/books.json --type json

    导出csv

    mongoexport -d class1804 -c books -o ~/桌面/dump/books.csv --type csv -f 'by_user,likes'

    数据导入:mongoimport

    mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv

    参数说明:

    d:数据库名

    c:collection名

    -type:导入的格式默认json

    f:导入的字段名

    -headerline:如果导入的格式是csv,则可以使用第一行的标题作为导入的字段

    -file:要导入的文件

    MongoDB 复制(副本集)

    作用:   是将数据同步在多个服务器的过程,复制还允许从硬件故障和服务中断中恢复数据。

    MongoDB复制原理

    mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。

    mongodb各个节点常见的搭配方式为:一主一从、一主多从。

    相关文章

      网友评论

          本文标题:MongoDB总结

          本文链接:https://www.haomeiwen.com/subject/lozmlqtx.html