2016年數(shù)據(jù)庫(kù)排行榜前十?dāng)?shù)據(jù)庫(kù)簡(jiǎn)單介紹:
數(shù)據(jù)庫(kù)使用熱度排行榜
- Oracle是甲骨文公司的,使用需要付費(fèi),非開源的
- MySQL目前很多公司都在使用,已經(jīng)被甲骨文收購(gòu),之前是開源的,但是現(xiàn)在也有很多功能已經(jīng)開始封裝,非完全開源了
- windows上的數(shù)據(jù)庫(kù),早年間很多游戲平臺(tái)使用的是這個(gè)數(shù)據(jù)庫(kù)
- MongoDB 近年來發(fā)展起來的文檔類型數(shù)據(jù)庫(kù),增長(zhǎng)較快,配合nodeJS使用
- PostgreSQL 暫時(shí)不知道
- DB2...
- Cassandra...
- Microsoft Acess...
- SQLite 小型,輕量型關(guān)系型數(shù)據(jù)庫(kù),目前安卓,蘋果端機(jī)子本地存儲(chǔ)使用的是SQLite數(shù)據(jù)庫(kù)
- Redis 是一種nosql,其他暫時(shí)不知道...
MongoDB簡(jiǎn)介
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),由C++語言編寫,旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)庫(kù)存儲(chǔ)方案,MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的.
MongoDB安裝
Linux平臺(tái)安裝MongoDB-->下載地址
選擇對(duì)應(yīng)的版本進(jìn)行下載,在此,我選擇的是ubuntu16.04 64位的版本的下載
下載指令:curl -o https://www.mongodb.com/dr/fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu1604-3.2.9.tgz/
解壓指令:tar -zxvf mongodb-linux-x86_64-ubuntu1604-3.2.9.tgz
將解壓包拷貝到指定目錄:mv mongodb-linux-x86_64-ubuntu1604-3.2.9 指定目錄(在此,我拷貝到了/usr/local/mongodb)
Mongodb可執(zhí)行文件位于bin目錄下,所以可以將其添加到path路徑中:
export PATH=<mongodb-install-directory>/bin:$PATH
在此我的為:export PATH = /usr/local/mongodb/bin:$PATH
創(chuàng)建數(shù)據(jù)庫(kù)目錄:
Mongodb數(shù)據(jù)存儲(chǔ)在data目錄的db目錄下,但是這個(gè)目錄在安裝過程中不會(huì)自動(dòng)創(chuàng)建,所以需要手動(dòng)創(chuàng)建data目錄,并在data目錄中創(chuàng)建db目錄
注意:/data/db是MongoDB默認(rèn)的啟動(dòng)數(shù)據(jù)庫(kù)路徑(--dbpath)
mkdir -p /data/db 如果數(shù)據(jù)庫(kù)目錄不是/data/db目錄,可以通過--dbpath來指定
# 進(jìn)入mongodb/bin目錄下,執(zhí)行./mongod啟動(dòng)mongodb ./mongod &這是表示在后臺(tái)啟動(dòng)(如果不這樣啟動(dòng),那么這個(gè)窗口就不能使用了,他會(huì)在前臺(tái)執(zhí)行...針對(duì)ubuntu服務(wù)器)
# MongoDB后臺(tái)管理Shell
如果需要進(jìn)入MongoDB后臺(tái)管理,你需先打開mongodb裝目錄的下的bin目錄,然后執(zhí)行mongo命令文件.
MongoDB Shell是MongoDB自帶的交互式j(luò)avascript shell,用來對(duì)mongodb進(jìn)行操作
cd /usr/local/mongodb/bin
./mongo
......
MongoDB web用戶界面
MongoDB提供了簡(jiǎn)單的HTTP用戶界面,如果你想啟用該功能,需要在啟動(dòng)的時(shí)候指定參數(shù) --rest.
.mongod --dbpath = /data/db --rest
MongoDB的web界面訪問端比服務(wù)的端口多1000.如果你的mongodb運(yùn)行端口使用27017,你可以在端口號(hào)為28017訪問web用戶界面.即http://localhost:28017.
創(chuàng)建數(shù)據(jù)庫(kù)
# 創(chuàng)建語法如下:
use DATABASE_NAME 如果數(shù)據(jù)庫(kù)不存在,則創(chuàng)建數(shù)據(jù)庫(kù),否則切換到指定數(shù)據(jù)庫(kù)
實(shí)例:
>use edwin
switched to db edwin
>db
edwin
# 如果想查看所有數(shù)據(jù)庫(kù),可以使用show dbs命令,
剛創(chuàng)建的數(shù)據(jù)庫(kù)edwin并不會(huì)被show出來,如果要顯示,我們需要向edwin插入一些數(shù)據(jù)
刪除數(shù)據(jù)庫(kù)
# MongoDB刪除數(shù)據(jù)庫(kù)的語法格式如下:
db.dropDatabase()
刪除當(dāng)前所使用的數(shù)據(jù)庫(kù),默認(rèn)情況下test
實(shí)例:
刪除我們之前創(chuàng)建的數(shù)據(jù)庫(kù)edwin
>show dbs 查看當(dāng)前所有的數(shù)據(jù)庫(kù)
....
>use edwin 進(jìn)入之前創(chuàng)建的數(shù)據(jù)庫(kù) edwin
...
>db.dropDatabase() 刪除數(shù)據(jù)庫(kù)edwin
...
>show dbs 查看是否已經(jīng)刪除成功
# 刪除集合的語法格式如下
db.collection.drop()
MongoDB插入文檔
文檔的數(shù)據(jù)結(jié)構(gòu)和json基本一樣,所有存儲(chǔ)在集合中的數(shù)據(jù)都是BSON格式
BSON是一種類json的一種二進(jìn)制形式的存儲(chǔ)格式,簡(jiǎn)稱Binary JSON
# 插入文檔
MongoDB使用insert()或save()方法向集合中插入文檔,語法如下:
db.COLLECTION_NAME.insert(document);
# 實(shí)例
以下文檔可以存儲(chǔ)在MongoDB的edwin數(shù)據(jù)庫(kù)的col集合中
>db.col.insert({title:"MongoDB教程",
description:"MongoDB是一個(gè)Nosql數(shù)據(jù)庫(kù)",
byb:"哈哈",
tags:["MongoDB","database","NoSQL"],
likes:100
})
以上實(shí)例中col是我們的集合名,如果該集合不存在該數(shù)據(jù)庫(kù)中,mongoDB會(huì)自動(dòng)創(chuàng)建該集合并插入文檔,
查看已插入文檔:
>db.col.find()
# 第二種插入數(shù)據(jù)的庫(kù)方式
我們可以將數(shù)據(jù)定義為一個(gè)變量
> document = ({title:"haha"});
執(zhí)行后顯示該變量的值
然后執(zhí)行插入操作
>db.col.insert(document)
# 插入文檔也可以使用db.col.save(document)命令.
如果不指定_id字段save()方法類似與inset方法,如果指定id字段,
則會(huì)更新該_id的數(shù)據(jù).
MongoDB更新文檔
MongoDB使用update()和save()方法來更新集合中的文檔
#update()方法
語法格式:
db.collection.update(
<query>,
<update>,
{
upset:<boolean>,
multi:<boolean>,
writeConcern:<document>
}
)
參數(shù)說明:
query:update的查詢條件,類似sql update查詢內(nèi)的where后面的.
update:update的對(duì)象和一些更新的操作符(如$,$inc...),也可以理解為sql update查詢內(nèi)的set后面的
upset:可選,這個(gè)參數(shù)的意思是,如果不存在update的記錄,是否插入objNEW,true為插入,默認(rèn)是false,不插入.
multi:可選,mongoDB默認(rèn)是false,只更新找到的第一條記錄,如果這個(gè)參數(shù)為ture,就
把按條件查出來的多條記錄全部更新.
writeConcern:可選,拋出異常的級(jí)別
實(shí)例:
db.col.update({''title':'MongoDB教程'},{$set:{'title':'MongoDB'}})
db.col.find().pretty()
注意:find后加pretty(),是說讓查找的內(nèi)容以集合的形式展示,一行一條記錄,比較直觀
# save方法
save()方法通過傳入的文檔來替換已有的文檔,語法格式如下:
db.collection.save(
<document>,
{
writeConcern:<document>
}
)
參數(shù)說明:
document:文檔數(shù)據(jù)
writeConcern:可選,拋出異常的級(jí)別
實(shí)例:
db.col.save({ "_id" : ObjectId("56064f89ade2f21f36b03136"),
"title" : "MongoDB",
"description" : "MongoDB 是一個(gè) Nosql 數(shù)據(jù)庫(kù)",
"by" : "Runoob",
"url" : "http://www.runoob.com",
"tags" : [ "mongodb", "NoSQL" ],
"likes" : 110
})
db.col.find().pretty() 進(jìn)行查詢是否更新完成
MongoDB刪除文檔
MongDB remove()函數(shù)式用來移除集合中的數(shù)據(jù),MongoDB數(shù)據(jù)更新可以使用
update()函數(shù),在執(zhí)行remove函數(shù)前先執(zhí)行find()命令來判斷執(zhí)行的條件是否正確,這是
一個(gè)比較好的習(xí)慣
語法格式:
db.collection.remove(
<query>,
<justOne>
)
參數(shù)說明
query:(可選參數(shù))刪除的文檔的條件
justOne:(可選參數(shù))如果設(shè)置為true或1,則只刪除一個(gè)文檔
writeConcern:(可選參數(shù))拋出異常的級(jí)別)
>db.col.remove({'title':'MongoDB教程'})
WriteResult({"nRemoved":2}) #刪除了兩條數(shù)據(jù)
>db.col.find() 查看是否已經(jīng)刪除成功
MongoDB查詢文檔
>db.COLLECTION_NAME.find()
find方法以非結(jié)構(gòu)的方式來顯示所有文檔.
如果你需要以易讀的方式來讀取數(shù)據(jù),可以使用pretty()方法,語法格式如下
>db.COLLECTION_NAME.find().pretty()
除了find()方法之外,還有一個(gè)findOne()方法,他只返回一個(gè)文檔