mongodb基礎(chǔ)入門(mén)

軟件環(huán)境:window7系統(tǒng);mongodb3.4.4的版本;robomongo-1.0.0管理工具

基本的條件查詢(xún)

  • 邏輯關(guān)系:$gt 大于 $lt 小于 $gte 大于或等于 $lte 小于等于 $ne 不等于 $in,$nin $exists 驗(yàn)證一個(gè)元素是否存在
  1. and 和 or結(jié)合使用: and 與 or 都是數(shù)組的格式。
db.getCollection('message').find({
    "$or":[
        {"$and":[{"type":0},{"ownerId":"385"}]},
        {"$and":[{"type":2},{"ownerId":"387"}]}
        ]
    })
  1. sort 排序:
db.getCollection('message').find({}).sort({"createdTime":-1}) 

1代表升序 -1代表降序

  1. 過(guò)濾出指定屬性:
db.getCollection('message').find({},{"title":1,"content":1})
  1. 模糊查詢(xún):
db.getCollection('appointment').find({"name":/30/})
  1. 空值:
db.foo.find({name:null})
  1. 查詢(xún)嵌入對(duì)象的值
db.getCollection('storeClerkInfo').find({"roleMap.2._id":2})
  1. 更改
db.buser.update({"gender":"男"},{$set:{"gender":0}},{multi:true})

multi true:代表更新所有,false:只更新一條

  1. 顯示指定的字段
db.buser.find({"gender":"男"},{name:1,phone:1})

multi true:代表更新所有,false:只更新一條

安裝為windows服務(wù):

  • 開(kāi)啟登錄驗(yàn)證:需要使用 用戶名密碼 登錄 才可進(jìn)行CRUD操作
mongod --bind_ip 0.0.0.0 --auth --logpath "C:\Program Files\MongoDB\Server\3.4\data\log\MongoDB.log" --logappend --dbpath "C:\Program Files\MongoDB\Server\3.4\data\db" --directoryperdb --reinstall

--auth需要認(rèn)證 --bind_ip綁定連接的IP 0.0.0.0表示所有的IP都可以連接

  • 無(wú)認(rèn)證登錄:
mongod --logpath "C:\Program Files\MongoDB\Server\3.4\data\log\MongoDB.log" --logappend --dbpath "C:\Program Files\MongoDB\Server\3.4\data\db" --directoryperdb --reinstall
  • 刪除mongodb的windows服務(wù):
mongod.exe --remove --serviceName "mongodb"

安全設(shè)置

  • 啟動(dòng)mongodb的安全認(rèn)證設(shè)置
  1. 先用無(wú)認(rèn)證方式 啟動(dòng)mongodb服務(wù)。
  2. 執(zhí)行以下語(yǔ)句,給store數(shù)據(jù)庫(kù)添加用戶
#給admin數(shù)據(jù)庫(kù)增加root管理用戶
use admin;
db.createUser({user: "root",pwd: "root",roles:["readWriteAnyDatabase","dbAdminAnyDatabase","clusterAdmin"]})//數(shù)據(jù)庫(kù)管理員
#db.createUser({user: "root",pwd: "root",roles: [{role: "readWriteAnyDatabase", db: "admin" }]});
#給store數(shù)據(jù)庫(kù)增加三個(gè)用戶:store[所屬用戶]、admin[讀寫(xiě)用戶]、test[只讀用戶]
use store;
db.createUser({user: "store",pwd: "store",roles: [{role: "dbOwner", db: "store" }]});
db.createUser({user: "admin",pwd: "admin",roles: [{role: "readWrite", db: "store" }]});
db.createUser({user: "test",pwd: "test",roles: [{role: "read", db: "store" }]});
  1. 停止mongodb服務(wù),開(kāi)啟登錄驗(yàn)證,啟動(dòng)服務(wù)
  • 角色說(shuō)明:
  1. read:允許用戶讀取指定數(shù)據(jù)庫(kù)
  2. readWrite:允許用戶讀寫(xiě)指定數(shù)據(jù)庫(kù)
  3. dbAdmin:允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問(wèn)system.profile
  4. userAdmin:允許用戶向system.users集合寫(xiě)入,可以找指定數(shù)據(jù)庫(kù)里創(chuàng)建、刪除和管理用戶
  5. clusterAdmin:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
  6. readAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀權(quán)限
  7. readWriteAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀寫(xiě)權(quán)限
  8. userAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限
  9. dbAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的dbAdmin權(quán)限。

基于配置文件的使用

  • 安裝完mongodb之后,配置:C:\Program Files\MongoDB\Server\3.4\data\conf C:\Program Files\MongoDB\Server\3.4\data\db 和 C:\Program Files\MongoDB\Server\3.4\data\log這三個(gè)目錄。
  • 執(zhí)行以下命令,安裝成window服務(wù):
mongod.exe --config "C:\Program Files\MongoDB\Server\3.4\data\conf\mongo.cfg" --install
  • mongo.cfg的配置內(nèi)容:
systemLog:
    destination: file
    path: C:\Program Files\MongoDB\Server\3.4\data\log\mongod.log
    logAppend: true
storage:
    journal:
        enabled: true
    dbPath: C:\Program Files\MongoDB\Server\3.4\data\db
net:
    bindIp: 0.0.0.0
    port: 27017
#security:
#    authorization: enabled
  • 刪除服務(wù):
mongod.exe --config "C:\Program Files\MongoDB\Server\3.4\data\conf\mongo.cfg" --remove
  • 服務(wù)啟動(dòng)、停止
net stop MongoDb
net start MongoDb

docker部署 增加安全檢驗(yàn)

  • 使用官方的mongodb鏡像啟動(dòng),命令:["--auth","--bind_ip","0.0.0.0"] 配置的時(shí)候: --auth --bind_ip 0.0.0.0
  • 使用DockerFile文件,構(gòu)建自定義的mongodb服務(wù)
# Version 0.0.1
FROM mongo:3.5

#創(chuàng)建文件所在目錄
RUN mkdir -p /data/conf
RUN mkdir -p /data/db
RUN mkdir -p /data/log

#VOLUME
VOLUME ["/data/conf","/data/db","/data/log"]

COPY mongo.cfg /data/conf/mongo.cfg

CMD ["mongod", "--config", "/data/conf/mongo.cfg"]
  • mongodb安裝后先用普通的方式啟動(dòng),增加數(shù)據(jù)庫(kù)的用戶后,在使用auth參數(shù)進(jìn)行啟動(dòng)
  • 限制docker容器的內(nèi)存大小 150M
  • 宿主機(jī)與容器路徑
主機(jī)路徑    容器路徑    權(quán)限
/var/lib/docker/hq/mongodb/log  /data/log   rw
/var/lib/docker/hq/mongodb/conf /data/conf  rw
/var/lib/docker/hq/mongodb/db   /data/db    rw

window下 備份與恢復(fù)

  • 到mongodb的安裝目錄下: C:\Program Files\MongoDB\Server\3.4\bin
  • 備份:mongodump.exe -h 127.0.0.1:27017 -d saas -o F:\honkon\bak\db
    說(shuō)明:使用mongodump命令進(jìn)行備份 -h指定IP與端口 -d 指定數(shù)據(jù)庫(kù)實(shí)例 -o 指定備份文件的目錄 更多參數(shù),請(qǐng)使用--help查看
  • 恢復(fù):mongorestore.exe -h 127.0.0.1:27017 -d store --dir F:\honkon\bak\db\saas --drop
    說(shuō)明:使用mongorestore命令進(jìn)行恢復(fù) -h指定IP與端口 -d 指定恢復(fù)的數(shù)據(jù)庫(kù)實(shí)例[可以和備份時(shí)的名稱(chēng)不一致] --dir 指定備份數(shù)據(jù)的目錄。 --drop 恢復(fù)時(shí),先刪除當(dāng)前數(shù)據(jù),然后恢復(fù)。
  • 使用例子:
#查看mongodump命令參數(shù)  
mongodump --help
#備份帶有權(quán)限驗(yàn)證的數(shù)據(jù)庫(kù)
mongodump.exe -h 127.0.0.1:27017 -u admin -p admin -d store -o F:\honkon\bak\db
#恢復(fù)帶有權(quán)限驗(yàn)證的數(shù)據(jù)庫(kù)
mongorestore.exe -h 127.0.0.1:27017 -u admin -p admin -d saas --dir F:\honkon\bak\db\store --drop
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容