溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

搭建 MongoDB 服務(wù)器,MongoDB 基本使用,數(shù)據(jù)導(dǎo)入導(dǎo)出

發(fā)布時(shí)間:2020-07-24 19:58:48 來(lái)源:網(wǎng)絡(luò) 閱讀:1039 作者:落雪無(wú)蘅 欄目:關(guān)系型數(shù)據(jù)庫(kù)

MongoDB

1.1軟件介紹

? 介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品

– 一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。

– 由 C++ 語(yǔ)言編寫。旨在為 WEB 應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。

– MongoDB 將數(shù)據(jù)存儲(chǔ)為一個(gè)文檔,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value) 對(duì)組成。

– MongoDB 文檔類似于 JSON 對(duì)象。字段值可以包含其他文檔,數(shù)組及文檔數(shù)組。

1.2軟件特點(diǎn)

– 安裝簡(jiǎn)單

– 面向文檔存儲(chǔ),操作比較簡(jiǎn)單容易

– 支持豐富的查詢表達(dá)

– 可以設(shè)置任何屬性的索引

– 支持主流編程語(yǔ)言 RUBY|PYTHON|JAVA|PHP|C++

– 支持副本集,分片

搭建 MongoDB 服務(wù)器

2.1 裝包

[root@50 ~]# tar -xf mongodb-linux-x86_64-rhel70-3.6.3.tgz

[root@50 ~]# ls mongodb-linux-x86_64-rhel70-3.6.3

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

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

[root@50 ~]# cd /usr/local/mongodb/bin

[root@50 mongodb]# mkdir etc log #etc配置文件 log 日志文件

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

2.2創(chuàng)建配置文件

[root@50 bin]# ./mongod --help 查看幫助

[root@50 etc]# cd /usr/local/mongodb/etc/

[root@50 etc]# vim mongodb.conf

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

logappend=true # 追加的方式記錄日志信息

dbpath=/usr/local/mongodb/data/db # 數(shù)據(jù)庫(kù)目錄

fork=true # 守護(hù)進(jìn)程方式運(yùn)行

bind_ip=192.168.4.50

port=27050

2.3啓動(dòng)服務(wù)

[root@50 mongodb]# ln -s /usr/local/mongodb/bin/* /sbin/

[root@50 ~]# mongod -f /usr/local/mongodb/etc/mongodb.conf #開(kāi)啓服務(wù)

[root@50 mongodb]# mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf #關(guān)閉服務(wù)

2.3.1查看進(jìn)程

[root@50 log]# ps -C mongod

PID TTY TIME CMD

2432 ? 00:00:00 mongod

2.3.2 查看端口

[root@50 log]# netstat -antulp | grep :27017

tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 2432/mongod

2.3.3查看是否有日誌文件

[root@50 log]# ls

Mongodb.log

2.4連接服務(wù)

[root@50 log]# mongo

MongoDB shell version v3.6.3

connecting to: mongodb://127.0.0.1:27017

MongoDB server version: 3.6.3

..............

2018-07-07T10:49:21.013+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'

2018-07-07T10:49:21.013+0800 I CONTROL [initandlisten]

show dbs // 顯示已有的庫(kù)

admin 0.000GB

config 0.000GB

local 0.000GB

db // 顯示當(dāng)前庫(kù)

test

exit # 斷開(kāi)連接

Bye

MongoDB 基本使用

3.1 指定服務(wù)IP地址

[root@50 log]# killall -9 mongod

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

bind_ip=192.168.4.50 更改ip

port=27050 更改端口

~

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

[root@50 mongodb]# netstat -antulp | grep :27050

tcp 0 0 192.168.4.50:27050 0.0.0.0:* LISTEN 2794/mongod

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

3.2 創(chuàng)建別名方便啓動(dòng)關(guān)閉

[root@50 ~]# vim /root/.bashrc

alias mstart='mongod -f /usr/local/mongodb/etc/mongodb.conf'

alias mstop='mongod --shutdown -f /usr/local/mongodb/etc/mongodb.conf '

3.3 常用管理命令

– show dbs 查看已有的庫(kù)

– db顯示當(dāng)前所在的庫(kù)

– use 庫(kù)名 切換庫(kù),若庫(kù)不存在的話 自動(dòng)延時(shí)創(chuàng)建庫(kù)

– show collections 或 show tables 查看庫(kù)下已有的集合

– db.dropDatabase() 刪除當(dāng)前所在的庫(kù)

3.4 數(shù)據(jù)庫(kù)取名規(guī)則

數(shù)據(jù)庫(kù)名可以是滿足以下條件的任意 UTF-8 字符串。

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

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

– 應(yīng)全部小寫。

– 最多 64 字節(jié)。

3.5 集合管理命令:查看 創(chuàng)建 刪除

– show collections 或 show tables # 查看集合

– db. 集合名 .drop() #刪除集合

– db. 集合名 .save({'',''}) ## 創(chuàng)建集合,集合不存

#在時(shí),創(chuàng)建并添加文檔

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

WriteResult({ "nInserted" : 1 })

use studb

switched to db studb

db

studb

show tables

db.c1.save({name:"bob",age:19,sex:"boy"})

WriteResult({ "nInserted" : 1 })

db.c1.save({name:"harry",age:20,sex:"girl"})

WriteResult({ "nInserted" : 1 })

db.c1.find

show tables

c1

文檔基本管理

文檔 : 類似于 MySQL 表里的記錄

4.1 文檔基本管理

文檔管理命令: 查看 統(tǒng)計(jì) 添加 刪除

– db. 集合名 .find()

 > db.c1.find()

– db. 集合名 .count()

 > db.c1.count()

 2

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

 > db.c1.insert({"name":"jim","age":11,"sex":"boy"})

 WriteResult({ "nInserted" : 1 })

– db. 集合名 .find({ 條件 })

 > db.c1.find({"age":11})

  { "_id" : ObjectId("5b405853f250badccca5adb8"), "name" : "jim", "age" : 11, "sex" :   "boy" }

– db. 集合名 .findOne() # 返回一條文檔

  > db.c1.findOne()

{

"_id" : ObjectId("5b403a1af250badccca5adb6"),

"name" : "bob",

"age" : 19,

"sex" : "boy"

}

– db. 集合名 .remove({}) # 刪除所有文檔

> db.c1.remove({})

– db. 集合名 .remove({ 條件 }) # 刪除與條件匹配的所有文檔

db.c1.remove({"name":"bob"})

WriteResult({ "nRemoved" : 1 })

基本數(shù)據(jù)類型

5.1字符 string/ 布爾 bool/ 空 null

字符串 string

– UTF-8 字符串都可以表示為字符串類型的數(shù)據(jù)

– {name:” 張三” } 或 { school:“tarena”}

? 布爾 bool

– 布爾類型有兩個(gè)值 true 和 false , {x:true}

db.c1.save({name:"tom",age:19,sigle:true})

? 空 null

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

db.c1.save({name:"lucy",age:18,sigle:false,pay:null})

5.2 數(shù)值 / 數(shù)組 array

5.2.1數(shù)值

– shell 默認(rèn)使用 64 為浮點(diǎn)型數(shù)值。 {x : 3.14} 或 {x : 3} 。

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

– NumberInt ( 4 字節(jié)整數(shù)) {x:NumberInt(3)}

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

– NumberLong ( 8 字節(jié)整數(shù)) {x:NumberLong(3)}

db.c1.save({name:"yaya",x:NumberLong(3)})

db.c1.find()

{ "_id" : ObjectId("5b403a4bf250badccca5adb7"), "name" : "harry", "age" : 20, "sex" : "girl" }

{ "_id" : ObjectId("5b405853f250badccca5adb8"), "name" : "jim", "age" : 11, "sex" : "boy" }

{ "_id" : ObjectId("5b405e31f250badccca5adb9"), "name" : "zhangsan", "x" : 3 }

{ "_id" : ObjectId("5b405ec1f250badccca5adba"), "name" : "tom", "age" : 19, "sigle" : true }

{ "_id" : ObjectId("5b405f36f250badccca5adbb"), "name" : "lucy", "age" : 18, "sigle" : false, "pay" : null }

{ "_id" : ObjectId("5b405f9bf250badccca5adbc"), "name" : "yaya", "x" : 3.99 }

{ "_id" : ObjectId("5b405fdef250badccca5adbd"), "name" : "yaya", "x" : NumberLong(3) }

5.2.2 數(shù)組 array

– 數(shù)據(jù)列表或數(shù)據(jù)集可以表示為數(shù)組

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

5.3 代碼 / 日期 / 對(duì)象

代碼

– 查詢和文檔中可以包括任何 JavaScript 代碼

– {x: function( ){/ 代碼 /}}

? 日期

– 日期被存儲(chǔ)為自新紀(jì)元依賴經(jīng)過(guò)的毫秒數(shù),不存儲(chǔ)時(shí)區(qū)

– {x:new Date( )}

db.c1.save({name:"liwei",birthday:new Date()})

? 對(duì)象

– 對(duì)象 id 是一個(gè) 12 字節(jié)的字符串,是文檔的唯一標(biāo)識(shí)

– {x: ObjectId() }

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

5.4內(nèi)嵌 / 正則表達(dá)式

5.4.1 內(nèi)嵌

– 文檔可以嵌套其他文檔,被嵌套的文檔作為值來(lái)處理

– {tarena: {address:“Beijing”,tel:“888888”,perso

n:”hanshaoyun”

– }}

db.c1.save({

... ywzd:{p:"dmy",jg:69,v:2},

... ngsfc:{p:"birdg",jg:89,v:4}

... })

5.4.2 正則表達(dá)式

– 查詢時(shí),使用正則表達(dá)式作為限定條件

– {x:/ 正則表達(dá)式 /}

db.c1.save({

... name:"hanmm",match:/^a/

... })

數(shù)據(jù)導(dǎo)入導(dǎo)出

6.1數(shù)據(jù)導(dǎo)出

語(yǔ)法格式 1

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

d 庫(kù)名 -c 集合名 -f 字段名 1, 字段名 2

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

[root@50 mnt]# mongoexport --host 192.168.4.50 --port 27050 -d studb -c c1 -f _id,name --type=csv > /mnt/c1.csv

2018-07-07T16:31:22.526+0800 connected to: 192.168.4.50:27050

2018-07-07T16:31:22.527+0800 exported 7 records

? 語(yǔ)法格式 2

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

  • 庫(kù)名 -c 集合名 -q ‘{ 條件 }’ -f 字段名 1 ,字段名 2

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

*注意:導(dǎo)出為 csv 格式必須使用 -f 指定字段名列表 !!!

語(yǔ)法格式 3

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

-d 庫(kù)名 -c 集合名 [ -q ‘{ 條件 }’ –f 字段列表

]

--type=json

目錄名 / 文件名 .json

[root@50 mnt]# mongoexport --host 192.168.4.50 --port 27050 -d studb -c c1 --type=json > /mnt/c1.json

2018-07-07T15:50:46.202+0800 connected to: 192.168.4.50:27050

2018-07-07T15:50:46.203+0800 exported 7 records

6.2 數(shù)據(jù)導(dǎo)入

語(yǔ)法格式 1

– #mongoimport –host IP 地址 – port 端口

-d 庫(kù)名 – c 集合名

--type=json

目錄名 / 文件名 .json

[root@50 mnt]# mongoimport --host 192.168.4.50 --port 27050 -d bbsdb -c t1 --type=json /mnt/c1.json

2018-07-07T16:20:39.777+0800 connected to: 192.168.4.50:27050

2018-07-07T16:20:40.115+0800 imported 7 documents

[root@50 mnt]# mongoimport --host 192.168.4.50 --port 27050 -d bbsdb -c t2 -f _id,name --type=csv /mnt/c1.csv

2018-07-07T16:43:37.797+0800 connected to: 192.168.4.50:27050

2018-07-07T16:43:37.953+0800 imported 8 documents

語(yǔ)法格式 2

– #mongoimport –host IP 地址 – port 端口

-d 庫(kù)名 – c 集合名

--type=csv --headerline [--drop] 目錄名 / 文件名 .csv

注意:導(dǎo)入數(shù)據(jù)時(shí)庫(kù)和集合不存在時(shí),會(huì)創(chuàng)建庫(kù)和集合后導(dǎo)入數(shù)據(jù),反之以追加的方式導(dǎo)入數(shù)據(jù)到集合里,使用— drop 選項(xiàng)可以刪除原有數(shù)據(jù)后導(dǎo)入新數(shù)據(jù) --headerline 忽略標(biāo)題

[root@50 mnt]# mongoimport --host 192.168.4.50 --port 27050 -d studb -c c1 --headerline --drop --type=csv /mnt/c1.csv

2018-07-07T17:00:41.677+0800 connected to: 192.168.4.50:27050

2018-07-07T17:00:41.678+0800 dropping: studb.c1

2018-07-07T17:00:41.967+0800 imported 7 documents

把系統(tǒng)用戶信息導(dǎo)入mongodb

新建一個(gè)文件

db.c3.save({name:"yaya",pass:"x",uid:"123",gid:"123",comment:"teacher",homeaddr:"/home/bin",shell:"/bin/bash"})

然後導(dǎo)出

[root@50 mnt]# mongoexport --host 192.168.4.50 --port 27050 -d bbsdb -c c3 -f name,pass,uid,gid,comment,homeaddr,shell --type=csv >/mnt/c3.csv

2018-07-07T17:34:29.526+0800 connected to: 192.168.4.50:27050

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

[root@50 mnt]# cp /etc/passwd .

[root@50 mnt]# ls

c1.csv c1.json c3.csv passwd

[root@50 mnt]# sed -i '' c3.csv

[root@50 mnt]# sed -i '$r passwd' c3.csv

[root@50 mnt]# vim c3.csv

[root@50 mnt]# sed -i 's/:/,/g' c3.csv

[root@50 mnt]# vim c3.csv

把 c3.csv d導(dǎo)入數(shù)據(jù)庫(kù)

[root@50 mnt]# mongoimport --host 192.168.4.50 --port 27050 \

-d studb -c c3 --headerline --drop --type=csv /mnt/c3.csv

2018-07-07T17:45:47.963+0800 connected to: 192.168.4.50:27050

2018-07-07T17:45:47.964+0800 dropping: studb.c3

2018-07-07T17:45:48.121+0800 imported 43 documents

[root@50 ~]# mongo -host 192.168.4.50 -port 27050 #登錄數(shù)據(jù)庫(kù)查看

db.c3.find()

{ "_id" : ObjectId("5b408bcb7f8c3df38b1fca2d"), "name" : "yaya", "pass" : "x", "uid" : 123, "gid" : 123, "comment" : "teacher", "homeaddr" : "/home/bin", "shell" : "/bin/bash" }

{ "_id" : ObjectId("5b408bcb7f8c3df38b1fca2e"), "name" : "root", "pass" : "x", "uid" : 0, "gid" : 0, "comment" : "root", "homeaddr" : "/root", "shell" : "/bin/bash" }

{ "_id" : ObjectId("5b408bcb7f8c3df38b1fca2f"), "name" : "bin", "pass" : "x", "uid" : 1, "gid" : 1, "comment" : "bin", "homeaddr" : "/bin", "shell" : "/sbin/nologin" }

{ "_id" : ObjectId("5b408bcb7f8c3df38b1fca30"), "name" : "daemon", "pass" : "x", "uid" : 2, "gid" : 2, "comment" : "daemon", "homeaddr" : "/sbin", "shell" : "/sbin/nologin" }

............................

數(shù)據(jù)備份恢復(fù)

7.1數(shù)據(jù)備份

備份數(shù)據(jù)所有庫(kù)到當(dāng)前目錄下的 dump 目錄下

[root@50 mnt]# mongodump --host 192.168.4.50 --port 27050 -d bbsdb

2018-07-07T17:56:11.403+0800 writing bbsdb.t2 to

2018-07-07T17:56:11.403+0800 writing bbsdb.t1 to

2018-07-07T17:56:11.403+0800 writing bbsdb.c3 to

2018-07-07T17:56:11.405+0800 done dumping bbsdb.t2 (8 documents)

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

備份時(shí)指定備份的庫(kù)和備份目錄

# mongodump [ --host ip 地址 --port 端口 ] -d 數(shù)據(jù)庫(kù)名

-c 集合名 -o 目錄(目錄無(wú)需事先創(chuàng)建 備份時(shí)指定即可!!!)

? 查看 bson 文件內(nèi)容

#bsondump ./dump/bbs/t1.bson

7.2數(shù)據(jù)恢復(fù)

語(yǔ)法格式

– mongorestore --host IP 地址 --port 端口 -d 數(shù)

據(jù)庫(kù)名 [ -c 集合名 ] 備份目錄名

[root@50 mnt]# mongorestore --host 192.168.4.50 --port 27050 -d db1 -c t1 /mnt/mogobak/bbsdb/t2.bson

2018-07-07T18:04:47.914+0800 checking for collection data in /mnt/mogobak/bbsdb/t2.bson

2018-07-07T18:04:47.914+0800 reading metadata for db1.t1 from /mnt/mogobak/bbsdb/t2.metadata.json

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI