這篇文章給大家分享的是有關(guān)MongoDB日常使用的技巧與注意事項(xiàng)有哪些的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了左權(quán)免費(fèi)建站歡迎大家使用!
一、查找數(shù)組字段不為空的記錄
查找數(shù)據(jù)中數(shù)組字段不為空的記錄。
舉個(gè)例子:有以下Mongo文檔,
{ "id" : "581c060f2b436c05aafb1632", "commit_history" : [ "581c20d52b436c05aafb1633", "581c21c12b436c05aafb1634" ] }, { "id" : "581c060f2b436c05aafb1633", "commit_history" : [] }
想要查找commit_history不為空的記錄,有以下方法:
方法一: db.collection.find({commit_history: {$not: {$size: 0}}})
方法二: db.collection.find({'commit_history.0': {$exists: 1}})
二、MongoDB添加用戶(hù)
在MongoDB中為一個(gè)Collection添加用戶(hù),可以如下操作:
use collection_name 切換到某個(gè)庫(kù)
db.createUser( { user: "collection_name", pwd: "password", roles: [ "readWrite", "dbAdmin" ] } )
三、有的時(shí)候需要?jiǎng)h除指定字段那一列,使用update操作。
例如要?jiǎng)h除name這一列:
query json:
{"name":{$exists:true}}
update json:
{$unset:{"name":""}}
四、數(shù)據(jù)導(dǎo)出,在mongodb的bin目錄執(zhí)行mongoexport命令并設(shè)定相關(guān)的參數(shù)
例如:
./mongoexport -h 192.168.0.201 --port 27017 –d admin –u admin –p admin -c department -o /home/admin/department.dat
-h:指定要連接的數(shù)據(jù)庫(kù)的ip;
--port:指定要連接的數(shù)據(jù)庫(kù)的端口;
-u:指定要連接的數(shù)據(jù)庫(kù)的用戶(hù)名;
-p:指定要連接的數(shù)據(jù)庫(kù)的用戶(hù)密碼;
-d:指定要連接的庫(kù)名;
-c:指定要導(dǎo)出的數(shù)據(jù)集合;
-o:指定要導(dǎo)出的數(shù)據(jù)目標(biāo)存放地址;
注:(1)、需要保證連接的數(shù)據(jù)庫(kù)處于正常運(yùn)行狀態(tài)中;
(2)、我曾遇到過(guò)一中情況,數(shù)據(jù)庫(kù)中加入了用戶(hù)信息,啟動(dòng)時(shí)是沒(méi)有以用戶(hù)驗(yàn)證的方式啟動(dòng),但是執(zhí)行這個(gè)命令的時(shí)候,還是在我指定了用戶(hù)名和密碼的情況下才導(dǎo)出成功,如果有人遇到相似情況,不妨一試。
五、數(shù)據(jù)導(dǎo)入,在mongodb的bin目錄執(zhí)行mongoimport命令并設(shè)置相關(guān)的參數(shù),參數(shù)解釋和上邊一樣
例如:
./mongoimport --port 27017 -d admin -u admin –p admin –c department /home/common/mongodb305/bin/department.dat
六、非amdin數(shù)據(jù)庫(kù)的用戶(hù)驗(yàn)證問(wèn)題:
我們給mongodb數(shù)據(jù)庫(kù)中的庫(kù)添加用戶(hù),可以在目標(biāo)數(shù)據(jù)庫(kù)中使用如下命令,例如在mongoTest庫(kù)中添加一個(gè)擁有讀寫(xiě)權(quán)限的用戶(hù):
db.createUser({"user":"test","pwd":"123456","roles":["readWrite"]})
也可以在admin數(shù)據(jù)庫(kù)中添加:
db.createUser({"user":"test","pwd":"123456","roles":[{"role":"readWrite","db":"test"},"readWrite"]})
要注意的是:這兩種方式是有區(qū)別的,也正是這個(gè)區(qū)別曾坑了我一把:
使用第一種方式添加的時(shí)候,我們可以在mongodb的bin目錄下直接執(zhí)行如下命令進(jìn)入test數(shù)據(jù)庫(kù)中操作,增刪改查都可以;也可以使用這個(gè)用戶(hù) 名和密碼在mongoVUE中連接:
./mongo -h 192.168.0.201 --port 27017 -u test -p 123456 -d test
但是如果是第二種方式創(chuàng)建的,那么再直接使用上邊的命令,會(huì)提示驗(yàn)證失敗,只有當(dāng)先進(jìn)入mongo shell連接到admin數(shù)據(jù)庫(kù),再切換到test數(shù)據(jù)庫(kù)的時(shí)候才能驗(yàn)證通過(guò)。這算是一個(gè)小坑,不明情況的或許會(huì)非常糾結(jié),明明用戶(hù)名和密碼沒(méi)問(wèn)題,卻不知為什么就是連不上。
七、mongodb3.0默認(rèn)的數(shù)據(jù)存儲(chǔ)方式還是原來(lái)2.6一樣的,我嘗試過(guò)更改為新的存儲(chǔ)方式,在啟動(dòng)時(shí)使用如下參數(shù),但需要注意的是,需要在數(shù)據(jù)庫(kù)中沒(méi)有數(shù)據(jù)的前提下才可以,否則會(huì)報(bào)錯(cuò):
./mongod -f /mongodb304/conf/mongodb.conf --storageEngine wiredTiger
mongodb.conf中配置了啟動(dòng)的其他各種參數(shù),如dbpath、logpath等。
感謝各位的閱讀!關(guān)于“MongoDB日常使用的技巧與注意事項(xiàng)有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!
文章名稱(chēng):MongoDB日常使用的技巧與注意事項(xiàng)有哪些
文章分享:http://www.rwnh.cn/article48/ipcgep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、App開(kāi)發(fā)、服務(wù)器托管、網(wǎng)站營(yíng)銷(xiāo)、響應(yīng)式網(wǎng)站、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
全網(wǎng)營(yíng)銷(xiāo)推廣知識(shí)