mogondb搭建

2019-05-06  本文已影响0人  就是这么任性_ac9c

mongodb

1

)装包

[root@host50 ~]# tar -xzf mongodb-linux-x86_64-rhel70-3.6.3.tgz

[root@host50 bin]# mkdir /usr/local/mongodb

[root@host50 bin]# cd ..

[root@host50 mongodb-linux-x86_64-rhel70-3.6.3]# mv bin//usr/local/mongodb/

[root@host50 mongodb-linux-x86_64-rhel70-3.6.3]# cd /usr/local/mongodb/

[root@host50 mongodb]# ls

bin

[root@host50 mongodb]# mkdir etc

[root@host50 mongodb]# mkdir log

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

数据库目录(名称必须是这个)

2

)创建并修改配置文件

[root@host50 bin]# ./mongod --help

Options:

General options:

  -h [ --help ]                         show this usageinformation

  --version                             show versioninformation

  -f [ --config ] arg                   configuration filespecifying

                                       additional options

手动创建服务主配置文件

[root@bogon ~]# vim mongodb.conf

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

logappend=true #

追加的方式记录日志信息

dbpath=/usr/local/mongodb/data/db #

数据库目录

fork=true #

守护进程方式运行

[root@host50 mongodb]# vim etc/mongodb.conf

[root@host50 mongodb]# cat etc/mongodb.conf

dbpath=/usr/local/mongodb/data/db

fork=true

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

logappend=ture

使用命令不用绝对路径

[root@host50 mongodb]# vim /etc/profile

[root@host50 mongodb]# source /etc/profile

[root@host50 mongodb]# tail -1 /etc/profile

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

[root@host50 mongodb]# echo $PATH

/usr/local/mongodb/bin/:/usr/local/mysql/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

启动服务:

[root@host50 etc]# mongod -f /usr/local/mongodb/etc/mongodb.conf

about to fork child process, waiting until server is ready forconnections.

forked process: 2652

child process started successfully, parent exiting

[root@host50 log]# ss -nuplt | grep :27017

tcp    LISTEN     0     128    127.0.0.1:27017                 *:*                  users:(("mongod",pid=2652,fd=11))

[root@host50 log]# ps -C mongod

  PID TTY          TIME CMD

 2652 ?        00:00:00 mongod

cd .

连接:

[root@host50 mongodb]# mongo

MongoDB shell version v3.6.3

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 3.6.3

Welcome to the MongoDB shell.

For interactive help, type "help".

For more comprehensive documentation, see

    http://docs.mongodb.org/

Questions? Try the support group

.

.

.

2018-07-07T10:51:26.962+0800 I CONTROL [initandlisten]

> show dbs  ###

看有多少库

admin   0.000GB

config  0.000GB

local   0.000GB

> db     ####

查看当前所在库

test

修改登陆ip和port

[root@host50 mongodb]# vim etc/mongodb.conf

[root@host50 mongodb]# tail -2 etc/mongodb.conf

bind_ip=192.168.4.50

port=27050

[root@host50 mongodb]# mongod -f etc/mongodb.conf

about to fork child process, waiting until server is ready forconnections.

forked process: 3019

child process started successfully, parent exiting

[root@host50 mongodb]# ss -nuplt | grep :27050

tcp    LISTEN     0     128    192.168.4.50:27050                 *:*                  users:(("mongod",pid=3019,fd=11))

[root@host50 mongodb]# mongo --host 192.168.4.50 --port 27050

MongoDB shell version v3.6.3

connecting to: mongodb://192.168.4.50:27050/

exit

停服务:

[root@host50 etc]# mongod --shutdown -f mongodb.conf

killing process with pid: 1830

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

– show dbs

查看已有的库

– db

显示当前所在的库

– use

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

– show collections

或 show tables 查看库下已有的集合

– db.dropDatabase()

删除当前所在的库

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

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

不得含有 ' ' (空格 ) 、 . 、 $ 、 / 、 \ 和 \0 ( 空字符)

应全部小写。

最多 64 字节。

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

– show collections

或 show tables # 查看集合

#

删除集合

– db.

集合名.drop()

– db.

集合名.save({'',''})

在时,创建并添加文档

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

WriteResult({ "nInserted" : 1 })

#

创建集合,集合不存

> use studb  

switched to db studb

> db

studb     ######

创建集合

>db.c1.save({"name":"boa","age":18,"class":"nsd1803"})

WriteResult({ "nInserted" : 1 })

> db.c1.save({"name":"xielingyun","class":"nsd1803"})

WriteResult({ "nInserted" : 1 })

> db.c1.find() ########

查看集合

{ "_id" : ObjectId("5b4039e85aba90867680d773"),"name" : "boa", "age" : 18, "class" :"nsd1803" }

{ "_id" : ObjectId("5b4039fc5aba90867680d774"),"name" : "xielingyun", "class" :"nsd1803" }

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

– db.

集合名.find()

– db.

集合名.count()

– db.

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

– db.

集合名 .find({ 条件})

– db.

集合名 .findOne() # 返回一条文档

– db.

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

– db.

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

字符 string/ 布尔 bool/ 空null

– 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)}

> db.c1.save({name:"bob",x:NumberInt(3)})

WriteResult({ "nInserted" : 1 })

> db.c1.save({name:"jack",x:NumberInt(3.99)})

WriteResult({ "nInserted" : 1 })

> db.c1.find()

{ "_id" : ObjectId("5b4039e85aba90867680d773"),"name" : "boa", "age" : 18, "class" :"nsd1803" }

{ "_id" : ObjectId("5b4039fc5aba90867680d774"),"name" : "xielingyun", "class" :"nsd1803" }

{ "_id" : ObjectId("5b405efb5aba90867680d776"),"name" : "bob", "x" : 3 }

{ "_id" : ObjectId("5b405f095aba90867680d777"),"name" : "jack", "x" : 3 }

数组array

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

– {x : [“a“ ,“ b”,”c”]}

> db.c1.save({name:'yaya',bboy:['bj','ls','zs']})

WriteResult({ "nInserted" : 1 })

> db.c1.find({name:'yaya'})

{ "_id" : ObjectId("5b405f885aba90867680d778"),"name" : "yaya", "bboy" : [ "bj","ls", "zs" ] }

代码 / 日期 / 对象代码

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

– {x: function( ){/*

代码*/}}

> db.c1.save({

... Iname:"php",

... codeformat:function(){/* */}

... })

WriteResult({ "nInserted" : 1 })

>

日期

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

– {x:new Date( )}

> db.c1.save({name:'xielingyun',brithday:new Date() })

WriteResult({ "nInserted" : 1 })

对象

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

– {x: ObjectId() }

> db.c1.save({name:"alice",stuid:ObjectId()})

WriteResult({ "nInserted" : 1 })

内嵌 / 正则表达式

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

> db.c1.save({

... ywzd:{p:'dmy',jg:69,v:2},ngsfc:{p:'bird',jg:89,v:3}})

WriteResult({ "nInserted" : 1 })

正则表达式

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

– {x:/

正则表达式/}

> db.c1.save({name:"hanmeimei",match:/^a/ })

WriteResult({ "nInserted" : 1 })

数据导出语法格式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 指定字段名列表!!!

[root@host50 ~]# mongoexport --host 192.168.4.50 --port 27050 -d studb -c c1 -f_id,name --type=csv > /root/monfodbdir/c1.csv

2018-07-07T16:33:45.906+0800    connectedto: 192.168.4.50:27050

2018-07-07T16:33:45.906+0800    exported10 records

语法格式3

#mongoexport [ --host IP

地址 --port 端口]

-d

库名 -c 集合名 [ -q ‘{ 条件 }’ –f 字段列表]

--type=json  >

目录名 / 文件名.json

[root@host50 mongodb]# mongoexport --host 192.168.4.50 --port 27050 -d studb -cc1 --type=json > /root/mongodbdir/c1.txt

后面不指定路径名就输出到当前屏幕

数据导入

语法格式1

– #mongoimport –host IP

地址 – port 端口

-d

库名 – c 集合名

--type=json

目录名 / 文件名.json

[root@host51 ~]# mongoimport --host 192.168.4.51 --port 27051 -d bbsdb -c t1--type=json /root/monfodbdir/c1.txt

2018-07-07T16:23:43.757+0800    connectedto: 192.168.4.51:27051

2018-07-07T16:23:43.891+0800    imported10 documents

[root@host51 ~]#

语法格式2

– #mongoimport –host IP

地址 – port 端口

-d

库名 – c 集合名

--type=csv --headerline [--drop]

目录名 / 文件名.c

sv

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

[root@host51 monfodbdir]# mongoimport --host 192.168.4.51 --port 27051 -d bbsdb-c t2 -f _id,name --type=csv /root/monfodbdir/c1.csv

2018-07-07T16:46:14.859+0800    connectedto: 192.168.4.51:27051

2018-07-07T16:46:15.564+0800    imported11 documents

[root@host51 monfodbdir]# mongoimport --host 192.168.4.51 --port 27051 -d bbsdb-c t1  --headerline --drop --type=csv/root/monfodbdir/c1.csv      ######t1

本身有数据

2018-07-07T17:00:41.899+0800    connectedto: 192.168.4.51:27051

2018-07-07T17:00:41.900+0800    dropping:bbsdb.t1

2018-07-07T17:00:42.278+0800    imported10 documents

练习将/etc/passwd导入mongodb

> db.c3.save({

... name:'yaya',

... password:'x',

... uid:88888

... gid:999999,

... comment:'teacher',

... homedir:'/home/yaya',

... shell:'/bin/bash'})

WriteResult({ "nInserted" : 1 })

>

[root@host50 ~]# mongoexport --host 192.168.4.50 --port 27050 -d test -c c3 -fname,password,uid,gid,comment,homedir,shell --type=csv >/root/monfodbdir/c4.csv

2018-07-07T17:34:21.899+0800    connectedto: 192.168.4.50:27050

2018-07-07T17:34:21.900+0800    exported 1record

制作csv格式文件,mongodb只能读scv,json格式

[root@host50 monfodbdir]# cp /etc/passwd ./

[root@host50 monfodbdir]# ls

c1.csv  c1.txt  c3.csv c4.csv  passwd

[root@host50 monfodbdir]# sed -i '$r passwd' c4.csv

[root@host50 monfodbdir]# vim c4.csv

[root@host50 monfodbdir]# sed -i 's/:/,/g' c4.csv

[root@host50 monfodbdir]# vim c4.csv

导入:

[root@host50 monfodbdir]# mongoimport --host 192.168.4.50 --port 27050 -d test -c c3 --headerline --drop--type=csv /root/monfodbdir/c4.csv

2018-07-07T17:44:19.202+0800    connectedto: 192.168.4.50:27050

2018-07-07T17:44:19.203+0800    dropping:test.c3

2018-07-07T17:44:19.444+0800    imported43 documents

数据备份

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

# mongodump [ --host ip

地址 --port 端口]

[root@host50 mongodb]# mongodump --host 192.168.4.50 --port 27050

2018-07-07T17:52:49.100+0800    writingadmin.system.version to

2018-07-07T17:52:49.100+0800    donedumping admin.system.version (1 document)

2018-07-07T17:52:49.100+0800    writingtest.c3 to

2018-07-07T17:52:49.100+0800    writingstudb.c1 to

2018-07-07T17:52:49.101+0800    donedumping test.c3 (43 documents)

2018-07-07T17:52:49.101+0800    donedumping studb.c1 (10 documents)

[root@host50 mongodb]# ls

bin  data dump  etc  log

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

# mongodump [ --host ip

地址 --port 端口 ] -d 数据库名

-c

集合名 -o 目录

[root@host50 mongodb]# mkdir /backmongo

[root@host50 mongodb]# mongodump --host 192.168.4.50 --port 27050 -d test -c c3-o /backmongo

[root@host50 backmongo]# ls

test

[root@host50 backmongo]# cd test/

[root@host50 test]# ls

c3.bson  c3.metadata.json

[root@host50 test]#

查看 bson 文件内容

#bsondump ./dump/bbs/t1.bson

数据恢复

语法格式

– mongorestore --host IP

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

[root@host50 test]# mongorestore --host 192.168.4.50 --port 27050 -d test -c c4/bakmongo/test/c3.bson

2018-07-07T18:03:40.018+0800    Failed:mongorestore target '/bakmongo/test/c3.bson' invalid: stat/bakmongo/test/c3.bson: no such file or directory

[root@host50 test]# mongorestore --host 192.168.4.50 --port 27050 -d test -c c4/backmongo/test/c3.bson

2018-07-07T18:03:49.609+0800    checkingfor collection data in /backmongo/test/c3.bson

2018-07-07T18:03:49.610+0800    readingmetadata for test.c4 from /backmongo/test/c3.metadata.json

2018-07-07T18:03:49.830+0800    restoringtest.c4 from /backmongo/test/c3.bson

2018-07-07T18:03:49.893+0800    no indexesto restore

2018-07-07T18:03:49.893+0800    finishedrestoring test.c4 (43 documents)

2018-07-07T18:03:49.893+0800    done

ngqH��@�|

上一篇 下一篇

猜你喜欢

热点阅读