MongoDB 概述

                                                               Day13    MongoDB 概述

    

软件介绍

• 介于关系数据库和非关系数据库之间的产品

– 一个基于分布式文件存储的数据库。

– 由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value) 对组成。

MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

软件特点

– 安装简单

– 面向文档存储,操作比较简单容易

– 支持丰富的查询表达

– 可以设置任何属性的索引

– 支持主流编程语言 RUBY|PYTHON|JAVA|PHP|C++

– 支持副本集,分片

 

搭建 MongoDB 服务器

1.装包

• 免安装,解压后即可使用

[root@bogon ~]# mkdir  /usr/local/mongodb

[root@bogon ~]# tar -zxf mongodb-linux-x86_64-rhel70-3.6.3.tgz

[root@bogon ~]# cp  -r

mongodb-linux-x86_64-rhel70-3.6.3/bin  /usr/local/mongodb/

[root@bogon ~]# cd /usr/local/mongodb/

[root@bogon mongodb]# mkdir etc

[root@bogon mongodb]# mkdir log

[root@bogon mongodb]# mkdir -p data/db

2.创建配置文件                         

• 手动创建服务主配置文件      


 2修改导入导出配置文件

bind_ip=192.168.4.55

port=27055


 [root@bogon mongodb]#cd etc/                      

[root@bogon  etc]# vim  mongodb.conf

logpath=/usr/local/mongodb/log/mongodb.log                        加入

logappend=true                                             # 追加的方式记录日志信息

dbpath=/usr/local/mongodb/data/db              # 数据库目录

fork=true                                                        # 守护进程方式运行

3.启动服务  

启动服务                         放在bin

mongodb ]# ./bin/mongod -f  /usr/local/mongodb/etc/mongodb.conf

• 查看进程

mongodb ]# ps -C mongod

• 查看端口

mongodb ]# netstat -utnlp | grep :27017

4.连接服务

• 本地连接,默认没有密码

[root@bogon ~]# /usr/local/mongodb/bin/mongo

MongoDB shell version v3.6.3

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 3.6.3

......

> show dbs      // 显示已有的库

admin 0.000GB

config 0.000GB

local 0.000GB

> exit # 断开连接


  常用管理命令

数据库管理

• 库管理命令: 查看 创建 切换 删除

show dbs 查看已有的库

² 显示当前所在的库

db                                 //查看当前的库

use 库名                       //切换库,若库不存在的话 ,自动延时创建库

show collections show tables    //查看库下已有的集合

db.dropDatabase()                        //删除当前所在的库

数据库管理(1 )

• 数据库名可以是满足以下条件的任意 UTF-8 字符串。

– 不能是空字符串( "")

– 不得含有 ' ' (空格 ) . $ / ( 空字符 )

– 应全部小写。

– 最多 64 字节。

集合管理

• 集合管理命令:查看 创建 删除

show collections show tables    # 查看集合

db. 集合名 .drop()                       # 删除集合

db. 集合名 .save({'',''})                 # 创建集合,集合不存

在时,创建并添加文档

> db.user.save({'name':'bob','age':'21'})

WriteResult({ "nInserted" : 1 })

集合管理(1 )

• 合法的集合名

– 集合名不能是空字符串 ""

– 集合名不能含有 字符(空字符 ) ,这个字符表示集合名的结尾。

– 集合名不能以 "system." 开头,这是为系统集合保留的前缀。

– 用户创建的集合名字不能含有保留字符。

文档基本管理

•   : 类似于 MySQL 表里的记录

 

文档基本管理 ( 1)

• 文档管理命令: 查看 统计 添加 删除

db. 集合名 .find()

db. 集合名 .count()

db. 集合名 .insert({name:jim})

db. 集合名 .find({ 条件 })

db. 集合名 .findOne() # 返回一条文档   //O是大写

db. 集合名 .remove({}) # 删除所有文档

db. 集合名 .remove({ 条件 }) # 删除与条件匹配的所有文档

文档管理 ( 2)

• 插入记录

>db.user.insert(                                       

{ title: 'MongoDB 教程 ',

description: 'MongoDB 是一个 Nosql 数据库 ',

by: 'MongoDB 中文网 ',

url: 'http://www.mongodb.org.cn',

tags: ['mongodb', 'database', 'NoSQL'],

likes: 100

})

>> db.user.remove({ "title" : "MongoDB 教程 "})  // 删除记录

基本数据类型

字符 string/ 布尔 bool/ null

• 字符串 string

UTF-8 字符串都可以表示为字符串类型的数据

{name:” 张三” } { school:tarena}

• 布尔 bool

– 布尔类型有两个值 true false , {x:true}

• 空 null

– 用于表示空值或者不存在的字段, {x:null}

数值 / 数组 array

• 数值

shell 默认使用 64 为浮点型数值。 {x : 3.14} {x : 3}

NumberInt ( 4 字节整数) {x:NumberInt(3)}

NumberLong ( 8 字节整数) {x:NumberLong(3)}

• 数组 array

– 数据列表或数据集可以表示为数组

{x : [a,b,c]}

代码 / 日期 / 对象

• 代码

– 查询和文档中可以包括任何 JavaScript 代码

{x: function( ){/* 代码 */}}

• 日期

– 日期被存储为自新纪元依赖经过的毫秒数,不存储时区

{x:new Date( )}

• 对象

– 对象 id 是一个 12 字节的字符串,是文档的唯一标识

{x: ObjectId() }

内嵌 / 正则表达式

• 内嵌

– 文档可以嵌套其他文档,被嵌套的文档作为值来处理

{tarena: {address:”Beijing”,tel:”888888”,person: “hanshaoyun”}}

• 正则表达式

– 查询时,使用正则表达式作为限定条件

{x:/ 正则表达式 /}

添加变量

bin]# tail -1 /etc/profile

.... ...

export PATH=/usr/local/mongodb/bin:$PATH

 mongodb]# source /etc/profile

停服务

bin]# pkill mongod

连接Mongodb数据库

[root@host52 bin]# ./mongo --host 192.168.4.52 --port 27052

数据导出

• 语法格式 1

#mongoexport [--host IP 地址 --port 端口 ]

-d 库名 -c 集合名 -f 字段名 1, 字段名 2 --type=csv

> 目录名 / 文件名 .csv

• 语法格式 2

#mongoexport --host IP 地址 --port 端口

- 库名 -c 集合名 -q { 条件 }-f 字段名 1 ,字段名 2

--type=csv > 目录名 / 文件名 .csv

注意:导出为 csv 格式必须使用 -f 指定字段名列表 !!!

步骤:

1)停止服务

[root@host55 mongodb]# pkill mongod                      

2)修改配置文件                                          

[root@bogon  etc]# vim mongodb.conf        

... ...     //后面加两条

bind_ip=192.168.4.55   #指定地址

port=27055                   #指定端口

3)起服务

mongodb ]# ./bin/mongod -f  /usr/local/mongodb/etc/mongodb.conf

4)导出

  •  //#导出为csv格式

[root@host55 mongodb]# mkdir  -p /root/bakdir/

[root@host55 mongodb]# touch  /root/bakdir/dc1.csv       // 库名    //表名 

mongodb]# mongoexport --host 192.168.4.55 --port 27055  -d test -c user  -f    name,age  --type=csv  >  /root/bakdir/dc1.csv 

  •  //#导出为json格式

mongodb]# mongoexport --host 192.168.4.55  --port 27055  -d test  -c user   --type=json  > /root/dc3.json

5)查看

[root@host55 mongodb]# cat  /root/dc3.json


数据导出(续 1 )

• 语法格式 3

#mongoexport [ --host IP 地址 --port 端口 ]

-d 库名 -c 集合名 [ -q { 条件 }’ –f 字段列表] --type=json  > 目录名 / 文件名 .json

• 指定字段名导出

  bin]# mongoexport --host 192.168.4.64 --port 27017  -d bbs -c  t1 -q   

 '{ "name":"yaya"}'  -f  name,age --type=csv  > /root/bakdir/dc2.csv

如图所示:

 

 


数据导

• 语法格式 1

#mongoimport host IP 地址 -port 端口 -d 库名 -c 集合名   --type=json    目录名 / 文件名 .json

• 语法格式 2

#mongoimport host IP 地址 -port 端口 -d 库名 -c 集合名 --type=csv --headerline [--drop] 目录名 / 文件名 .csv

注意:导入数据时库和集合不存在时,会创建库和集合后导入数据反之以追加的方式导入数据到集合里,使用— drop 选项可以删除原有数据后导入新数据 --headerline 忽略标题

  • 导入  //#导入为json格式

 mongodb]#  mongoimport --host 192.168.4.55 --port  27055  -d test  -c bbd  --type=json  /root/dc3.json

  • 导入   //#导出为csv格式    

 mongodb]# mongoimport --host 192.168.4.55 --port 27055   -d test     -c  user   --type=csv  --headerline    /root/bakdir/dc1.csv

 注意:-f 指定的标题不可删掉,否则导入不成功


 数据备份恢复

• 备份数据所有库到当前目录下的 dump 目录下

# mongodump [ --host ip 地址 --port 端口 ]

• 备份时指定备份的库和备份目录

# mongodump [ --host ip 地址 --port 端口 ]  -d 数据库名-c 集合名 -o 目录

         目录无需事先创建 备份时指定即可!!!

• 查看 bson 文件内容  

#bsondump ./dump/bbs/t1.bson

[root@host64 bin]# mongodump  --host  192.168.4.64  --port 端口   

 //备份数据所有库到当前目录下的dump目录下

[root@host64 bin]# mongodump  --host  192.168.4.64  --port  27017  -d   数据库名  -o   目标目录       //备份时指定库名的备份目录

例子:

[root@host64 bin]# mkdir  /root/bakdir

[root@host64 bin]# mongodump  --host  192.168.4.55  --port  27055  -d       test  -o   /root/bakdir

[root@host55 ~]# cd /root/bakdir1/test/

[root@host64 bin]# ./bsondump  bbd.bson    //查看bson文件内容


数据恢复

• 语法格式  (恢复之前要确定没有要恢复的库,或者导入另一个)

mongorestore --host IP 地址 --port 端口 -d 数据库名 [ -c 集合名 ] 备份目录名

 

 

 

##############################################

例子:

[root@host55 ~]# /usr/local/mongodb/bin/mongorestore --host  192.168.4.55   --port  27055  -d  数据库名   备份目录名

[root@host55 ~]# /usr/local/mongodb/bin/mongorestore --host  192.168.4.55     --port  27055  -d   test    /root/bakdir/test/

[root@host55 ~]# /usr/local/mongodb/bin/mongorestore --host  192.168.4.55   --port  27055   -d  test  -c user  /root/bakdir1/test/bbd.bson

###############################################

原文地址:https://www.cnblogs.com/qingbai/p/12016958.html