軟件環(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è)元素是否存在
- and 和 or結(jié)合使用: and 與 or 都是數(shù)組的格式。
db.getCollection('message').find({
"$or":[
{"$and":[{"type":0},{"ownerId":"385"}]},
{"$and":[{"type":2},{"ownerId":"387"}]}
]
})
- sort 排序:
db.getCollection('message').find({}).sort({"createdTime":-1})
1代表升序 -1代表降序
- 過(guò)濾出指定屬性:
db.getCollection('message').find({},{"title":1,"content":1})
- 模糊查詢(xún):
db.getCollection('appointment').find({"name":/30/})
- 空值:
db.foo.find({name:null})
- 查詢(xún)嵌入對(duì)象的值
db.getCollection('storeClerkInfo').find({"roleMap.2._id":2})
- 更改
db.buser.update({"gender":"男"},{$set:{"gender":0}},{multi:true})
multi true:代表更新所有,false:只更新一條
- 顯示指定的字段
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è)置
- 先用無(wú)認(rèn)證方式 啟動(dòng)mongodb服務(wù)。
- 執(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" }]});
- 停止mongodb服務(wù),開(kāi)啟登錄驗(yàn)證,啟動(dòng)服務(wù)
- 角色說(shuō)明:
- read:允許用戶讀取指定數(shù)據(jù)庫(kù)
- readWrite:允許用戶讀寫(xiě)指定數(shù)據(jù)庫(kù)
- dbAdmin:允許用戶在指定數(shù)據(jù)庫(kù)中執(zhí)行管理函數(shù),如索引創(chuàng)建、刪除,查看統(tǒng)計(jì)或訪問(wèn)system.profile
- userAdmin:允許用戶向system.users集合寫(xiě)入,可以找指定數(shù)據(jù)庫(kù)里創(chuàng)建、刪除和管理用戶
- clusterAdmin:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有分片和復(fù)制集相關(guān)函數(shù)的管理權(quán)限。
- readAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀權(quán)限
- readWriteAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的讀寫(xiě)權(quán)限
- userAdminAnyDatabase:只在admin數(shù)據(jù)庫(kù)中可用,賦予用戶所有數(shù)據(jù)庫(kù)的userAdmin權(quán)限
- 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