新聞中心
隨著互聯(lián)網(wǎng)的迅猛發(fā)展,針對大規(guī)模數(shù)據(jù)的存儲和處理需求,數(shù)據(jù)庫系統(tǒng)成為了不可或缺的工具。MongoDB作為新一代文檔數(shù)據(jù)庫,以良好的可擴展性和高效性,在市場上得到了廣泛的應用。然而,隨著數(shù)據(jù)庫中數(shù)據(jù)量的增加,清理和刪除不再需要的數(shù)據(jù)變得尤為重要。本文將詳細介紹在MongoDB中如何輕松刪除數(shù)據(jù)庫,讓你的數(shù)據(jù)變得更加干凈。

一、MongoDB中數(shù)據(jù)庫的刪除
在MongoDB中刪除數(shù)據(jù)庫十分簡單,只需在命令行中輸入以下命令即可:
“`
db.dropDatabase()
“`
然而,在運行該命令前,請務必確認已備份該數(shù)據(jù)庫中的所有數(shù)據(jù),以免不可挽回地造成數(shù)據(jù)丟失。
除了在命令行中刪除數(shù)據(jù)庫外,MongoDB還提供了兩種方式來刪除數(shù)據(jù)庫:
1.使用MongoDB Compass刪除數(shù)據(jù)庫
MongoDB Compass是MongoDB官方推出的圖形化管理工具,可供用戶快速可視化地管理MongoDB數(shù)據(jù)庫。在使用MongoDB Compass刪除數(shù)據(jù)庫時,我們只需選擇目標數(shù)據(jù)庫,點擊鼠標右鍵,在彈出菜單中選擇“Drop Database”便可輕松刪除數(shù)據(jù)庫。
2.使用第三方插件mongocli刪除數(shù)據(jù)庫
mongocli是MongoDB官方推出的命令行客戶端,使用mongocli用戶可以更加高效地執(zhí)行MongoDB信息操作。在使用mongocli刪除數(shù)據(jù)庫時,我們只需在命令行中輸入以下命令:
“`
mongocli atlas database delete
“`
其中,“即為目標數(shù)據(jù)庫的名稱。
二、MongoDB中的刪除
MongoDB中的是指相同類型文檔的,相當于傳統(tǒng)數(shù)據(jù)庫中的表。在MongoDB中刪除同樣也十分簡單,只需在命令行中輸入以下命令即可:
“`
db..drop()
“`
其中,“即為目標的名稱。
除了在命令行中刪除外,MongoDB還提供了兩種方式來刪除:
1.使用MongoDB Compass刪除
在MongoDB Compass中,我們只需選擇目標,點擊鼠標右鍵,在彈出菜單中選擇“Drop Collection”便可輕松刪除。
2.使用第三方插件mongocli刪除
在使用mongocli刪除時,我們只需在命令行中輸入以下命令:
“`
mongocli atlas collection delete –databaseName=
“`
其中,“即為目標的名稱,“即為目標所在的數(shù)據(jù)庫的名稱。
三、MongoDB中條件刪除
MongoDB還可以根據(jù)特定條件來刪除中的文檔。在MongoDB中,我們可以使用deleteOne()和deleteMany()方法來刪除指定條件的文檔。
1.deleteOne()
deleteOne()方法用于刪除滿足指定條件的單個文檔。例如,我們有一個名為users的,其中包含如下3個文檔:
“`
{ _id: 1, name: “Jack”, age: 22 }
{ _id: 2, name: “Lucy”, age: 22 }
{ _id: 3, name: “Mike”, age: 23 }
“`
我們希望刪除年齡為22歲的Lucy的文檔,只需在命令行中輸入以下命令即可:
“`
db.users.deleteOne({name: “Lucy”, age: 22})
“`
此時,MongoDB將會刪除維護在users中輸入條件滿足的唯一文檔,即{ _id: 2, name: “Lucy”, age: 22 }。
2.deleteMany()
deleteMany()方法用于刪除滿足指定條件的所有文檔。例如,我們?nèi)砸評sers為例:
“`
{ _id: 1, name: “Jack”, age: 22 }
{ _id: 2, name: “Lucy”, age: 22 }
{ _id: 3, name: “Mike”, age: 23 }
“`
我們希望刪除所有年齡為22歲的文檔,只需在命令行中輸入以下命令即可:
“`
db.users.deleteMany({age: 22})
“`
此時,MongoDB將會刪除維護在users中輸入條件滿足的所有文檔,即{ _id: 1, name: “Jack”, age: 22 }和{ _id: 2, name: “Lucy”, age: 22 }。
四、小結(jié)
成都網(wǎng)站建設公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設、網(wǎng)站制作、網(wǎng)頁設計及定制高端網(wǎng)站建設服務!
mongodb 刪除后為什么不釋放空間
比較慢的方法:可以嘗試給這個數(shù)據(jù)庫增加一個 replica-set,枯鄭等新加的結(jié)點和老數(shù)據(jù)同步了之后就可以停掉老數(shù)據(jù)庫并刪除老數(shù)據(jù),以新結(jié)點對外提供服務,此時數(shù)據(jù)庫空間應該已經(jīng)整理好并壓縮到最小了。這個過程自己并不可控,200 GB 的話要同步多久無法預估,但是不會太影響 mongodb 繼續(xù)喊判提供服務。
比較快的方法:用 mongodump/mongoexport 導出所有數(shù)據(jù),可以遠程導出,倒完之后再用 mongorestore/mongoimport
恢復數(shù)據(jù)
。這個操作會導致 mongodb 鎖數(shù)據(jù)庫,無法對外提供服務,如果鎖了也無所謂可以用這個方法,200 GB 說不定需要小半天的時間,得自己估量一下。
另外沒滲頌,db.repairDatabase() 效果很有限,且會導致長時間鎖數(shù)據(jù)庫,不用為好。mongodb 解決磁盤問題比較好的方法是用 auto-sharding 將數(shù)據(jù)分攤到多臺機器上,不過這個事情得提前計劃好,一旦數(shù)據(jù)庫已經(jīng)非常大了,能做的事情就很少了。
原因是mongodb設計的本身機制問題造成的。
首先,mongodb在創(chuàng)建數(shù)據(jù)文件時,會根據(jù)64M,128M,256M…遞增的方式產(chǎn)生數(shù)據(jù)文件,更大數(shù)據(jù)文件為2G,增大到2G之后,后面新增的數(shù)據(jù)文件都占用2G空間。
當刪除某一個表的數(shù)據(jù)時,mongodb會標記你刪除該表所在數(shù)據(jù)文念或件位置為:該部分的數(shù)據(jù)已經(jīng)刪除,但是不會釋放該數(shù)據(jù)文件櫻高桐所占用的空間,當有新的數(shù)據(jù)進來之后,會將數(shù)據(jù)分配到該數(shù)據(jù)文件中。
一方面是:刪除文件后不產(chǎn)生多余的數(shù)據(jù)碎片,
另一方面不做數(shù)據(jù)的大規(guī)模遷移,減少mongodb內(nèi)部的IO操作。
所以在刪除數(shù)據(jù)表之后,會發(fā)現(xiàn)系統(tǒng)空間并沒有釋放,從mongodb本身看,空間已經(jīng)釋放了,被刪除數(shù)據(jù)的空間依然可用;
但從系統(tǒng)角度看,空間沒有釋放,并不會影響數(shù)據(jù)的脊坦存儲。
關于mongo 刪除.數(shù)據(jù)庫的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
四川成都云服務器租用托管【創(chuàng)新互聯(lián)】提供各地服務器租用,電信服務器托管、移動服務器托管、聯(lián)通服務器托管,云服務器虛擬主機租用。成都機房托管咨詢:13518219792
創(chuàng)新互聯(lián)(www.cdcxhl.com)擁有10多年的服務器租用、服務器托管、云服務器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗、開啟建站+互聯(lián)網(wǎng)銷售服務,與企業(yè)客戶共同成長,共創(chuàng)價值。
網(wǎng)頁標題:輕松刪除Mongo數(shù)據(jù)庫,讓你的數(shù)據(jù)更干凈(mongo刪除.數(shù)據(jù)庫)
分享網(wǎng)址:http://m.5511xx.com/article/cosspop.html


咨詢
建站咨詢
