什么是MongoDB ?
- MongoDB 是由C++語言編寫的肩碟,是一個基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng)。 在高負載的情況下,添加更多的節(jié)點猬腰,可以保證服務(wù)器性能。
- MongoDB 旨在為WEB應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案猜敢。
- MongoDB 將數(shù)據(jù)存儲為一個文檔姑荷,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成。MongoDB 文檔類似于 JSON 對象缩擂。字段值可以包含其他文檔鼠冕,數(shù)組及文檔數(shù)組。
MongoDB特點
- 模式自由 :可以把不同結(jié)構(gòu)的文檔存儲在同一個數(shù)據(jù)庫里
- 面向集合的存儲:適合存儲 JSON風格文件的形式
- 完整的索引支持:對任何屬性可索引
- 復(fù)制和高可用性:支持服務(wù)器之間的數(shù)據(jù)復(fù)制胯盯,支持主-從模式及服務(wù)器之間的相互復(fù)制懈费。復(fù)制的主要目的是提供冗余及自動故障轉(zhuǎn)移
- 自動分片:支持云級別的伸縮性:自動分片功能支持水平的數(shù)據(jù)庫集群,可動態(tài)添加額外的機器
- 豐富的查詢:支持豐富的查詢表達方式博脑,查詢指令使用JSON形式的標記憎乙,可輕易查詢文檔中的內(nèi)嵌的對象及數(shù)組
- 快速就地更新:查詢優(yōu)化器會分析查詢表達式,并生成一個高效的查詢計劃
- 高效的傳統(tǒng)存儲方式:支持二進制數(shù)據(jù)及大型對象(如照片或圖片)
基本操作
- MongoDB將數(shù)據(jù)存儲為一個文檔叉趣,數(shù)據(jù)結(jié)構(gòu)由鍵值(key=>value)對組成
- MongoDB文檔類似于JSON對象泞边,字段值可以包含其他文檔、數(shù)組君账、文檔數(shù)組
- 安裝管理mongodb環(huán)境
- 完成數(shù)據(jù)庫繁堡、集合的管理
- 數(shù)據(jù)的增加、修改乡数、刪除椭蹄、查詢
配置文件在/etc/mongod.conf
默認端口27017
啟動mongodb 服務(wù)
sudo service mongod start停止,停止后輸入將不能啟動shell
sudo service mongod stop重置服務(wù)
sudo service mongod restop啟動mongodb客戶端
mongo
終端退出連接
exit 或 ctrl+c
卸載mongodb數(shù)據(jù)庫
刪除 MongoDB 包
sudo apt-get purge mongodb-org
刪除 MongoDB 數(shù)據(jù)庫和日志文件
sudo rm -r /var/log/mongodb
sudo rm -r /var/lib/mongodb
數(shù)據(jù)庫基本命令
- 查看當前數(shù)據(jù)庫名稱
db
- 列出所有在物理上存在的數(shù)據(jù)庫
show dbs
- 切換數(shù)據(jù)庫 如果數(shù)據(jù)庫不存在净赴,則指向數(shù)據(jù)庫绳矩,但不創(chuàng)建,直到插入數(shù)據(jù)或創(chuàng)建集合時數(shù)據(jù)庫才被創(chuàng)建
use 數(shù)據(jù)庫名稱
- 查看當前數(shù)據(jù)庫信息
db.stats()
db:當前數(shù)據(jù)庫的名字玖翅。
collections:當前數(shù)據(jù)庫的集合數(shù)翼馆。
objects:當前數(shù)據(jù)庫所有集合總所包含的對象(即文檔)的數(shù)量割以。
avgObjSize:每個文檔的平均大小(以字節(jié)為單位)应媚。
dataSize:此數(shù)據(jù)庫中保存的未壓縮數(shù)據(jù)的總大小严沥,不是
指占有磁盤大小,單位是bytes中姜。
storageSize:分配給此數(shù)據(jù)庫的集合用于存儲文檔的空
間總量消玄,也就是當前數(shù)據(jù)庫占有磁盤大小,單位是bytes丢胚。
numExtents:當前數(shù)據(jù)庫所有集合包含的擴展數(shù)量的統(tǒng)計翩瓜。
indexes:數(shù)據(jù)庫中包含的所有集合的索引總數(shù),也就是system.indexes表數(shù)據(jù)行數(shù)携龟。
indexSize:此數(shù)據(jù)庫上創(chuàng)建的所有索引的總大小兔跌,單位是bytes。
- 數(shù)據(jù)庫刪除:刪除當前指向的數(shù)據(jù)庫,如果數(shù)據(jù)庫不存在峡蟋,則什么也不做
db.dropDatabase()
- 創(chuàng)建集合
- 語法
db.createCollection(name, options)
- 查看當前數(shù)據(jù)庫所有集合
show collections:當前數(shù)據(jù)庫的集合數(shù)坟桅。
- 刪除集合
- 語法格式:
db.集合名稱.drop()
如果成功刪除選定集合,則 drop() 方法返回 true层亿,否則返回 false
數(shù)據(jù)的增刪改查
- 語法
db.集合名稱.insert(document)
注意:插入文檔時桦卒,如果不指定_id參數(shù)立美,MongoDB會為文檔分配一個唯一的ObjectId
- 刪除文檔語法:
remove() 方法的基本語法格式如下所示:
db.collection.remove(
<query>,
{justOne: <boolean>,}
)
- 基本的數(shù)據(jù)查詢
- 基本查詢
db.集合名稱.find({條件文檔})
*
findOne():查詢匿又,只返回第一個
db.集合名稱.findOne({條件文檔})
例1:查詢出姓名等于李某某的學(xué)生
db.stu.find({name:'李某某'})
- 更新文檔MongoDB 使用 update() 和 save() 方法來更新集合中的文檔。兩個函數(shù)是有區(qū)別的建蹄。update() 方法
- update() 方法用于更新已存在的文檔
db.collection.update(
<query>,
<update>,
{
upsert: <boolean>,
multi: <boolean>,
}
)