mogondb搭建

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��@�|

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容