MongoDB总结

首先我们先了解下什么是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总结_第1张图片

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总结_第2张图片

MongoDB 复制(副本集)

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

MongoDB复制原理

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

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

你可能感兴趣的:(MongoDB总结)