標籤:基本操作 mongodb mongodb增刪該查操作樣本 mongodb快速入門
1.MongoDb簡介
mongodb是一個基於分布式儲存的開來源資料庫系統又被稱為文檔資料庫,可以將資料存放區為一個文檔,資料結構有索引值對(key=>value)對組成,儲存的文檔類似於JSON對象(BSON->JSON的二進位化)。
特點:內部執行引擎為JS解譯器,把文檔儲存成BSON結構,在查詢時,轉換為JS對象,並可以通過熟悉的JS文法來操作。
mongodb和傳統資料庫簡單比較,最大的不同:
傳統型資料庫:結構化資料,定好了表結構後,每一行的內容,必定是符合表結構的,就是說列的個數以及類型都一樣。
文檔資料庫:表下的每篇文檔都可以有自己獨特的結構或者屬性和值。
2.MongoDb的安裝(centos7下詳細安裝步驟)
1)首先下載mongodb安裝包:
#wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.4.4.tgz
2)進入到下載的目錄,將mongodb的安裝包解壓到指定的目錄中:
#tar -xvf mongodb-linux-x86_64-rhel70-3.4.4.tgz -C /usr/local
3)進入解壓到的目錄,來啟動mongodb服務
#cd /usr/local
重新命名MongoDb解壓的目錄
#mv mongodb-linux-x86_64-rhel70-3.4.4 mongodb#cd mongodb
4)啟動MongoDb
#mkdir -p /home/mongodata/ /var/log/mongolog/#./bin/mongod --dbpath /home/mongodata/ --logpath /var/log/mongolog/mongo.log --fork --port 27017
啟動參數說明:
--dbpath 資料存放區目錄
--logpath 日誌儲存目錄
--port 運行連接埠
--fork 後台運行
5)通過用戶端串連到MongoDb
#./bin/mongo
注意:在一些老的版本中MongoDb啟動的時候會事先佔用很多磁碟空間,啟動後可能需要佔3-4G空間,如果虛擬機器的空間過小將不能啟動,但是它有一個選項--smallfiles可以使啟動時佔用空間縮小至400M左右。
3.mongodb具體操作樣本
一 、mongodb的入門操作:
1)查詢所有庫列表
>show dbs;
2)切換資料庫(選擇使用的資料庫)
>use local;
3)建立資料庫
(注意:由於mongodb資料庫是隱式建立沒有直接的建立資料庫的方法,但可以直接使用use切換到一個事先不存在的庫下邊,當建立表(collections)的時候會自動建立當前資料庫)
>use shop
(假設shop庫不存在,也可以直接使用use)
>db.createCollection(‘user‘);
(可以在一個不存在的庫下邊直接建立collections(或者可以說建立表))
>show dbs;
然後你再去查看庫的時候會發現庫shop已經預設建立出來了。
4)建立一個表(collections)
>db.createCollection(‘user‘)
注意:表(也就是collections)也可以是隱式建立的,還拿上邊的例子說:假如shop庫裡邊不存在一個goods的表(collections),我們仍然可以使用下邊的方式插入資料
>db.goods.insert({_id:1,name:‘pipixia‘,price:52.10});
然後我們去查看shop這個庫內的表(collections)時,發現goods已經被自動建立出來了。
5)向collections(表)中插入單篇文檔(資料)(插入的資料為json格式)
>db.user.insert({name:‘張三‘,age:18})
6)尋找collections(表)中的內容
>db.user.find()
7)刪除collections(表)()
>db.user.drop()
8)刪除資料庫(databases)
>db.dropDatabase()
二、mongodb的基本操作(增、刪、改、查)CURD
1.增操作:insert
注意:mongodb儲存的是文檔,而所謂的文檔在這裡其實是json格式的對象
1)增加單篇文檔
>db.collectionName.insert({sn:‘001‘,name:‘xiaoming‘})
2)增加單篇文檔,並指定id
>db.collectionName.insert({_id:2,sn:‘002‘,name:‘xiaohong‘})
3)增加多篇文檔(因為json是一個對象,js裡邊有數組的概念,只需把多個對象放到數組裡即可)
>db.collectionName.insert([{sn:‘003‘,‘name‘:‘zhangfei‘},{sn:‘004‘,‘name‘:‘guanyu‘},{sn:‘004‘,‘name‘:‘liubei‘}])
2.刪操作:remove
文法:db.collectionName.remove(查詢運算式,選項)
選項是指{justOne:true/false},是否刪一行,預設是false
注意:
1.查詢運算式依然是一個json對象
2.查詢運算式匹配到的行將被刪除
3.如果沒有查詢運算式,則collections中的所有文檔將全部被刪除
1)刪除指定json文檔(json格式的對象)
例如:刪除collectionName表中sn屬性值為002的json對象文檔
>db.collectionName.remove({sn:‘002‘})
2)假如查詢運算式為空白,如下
>db.collectionName.remove()
會刪除庫中的所有文檔,使用要小心
3)假如我們想刪除符合查詢運算式中的一行資料可以使用上邊提到的《選項》功能,如
>db.collectionName.remove({"name":"zhangsan"},true)
則只會刪除所有name符合zhangsan的其中一條文檔資料
3.改操作:update
文法:db.collectionName.update(查詢運算式,新值,選項)
1)查詢運算式是指需要修改誰,新值是指改成什麼樣,選項是指選擇性參數
例如:
>db.collectionName.update({name:‘zhangfei‘},{name:‘zhangfeifei‘})
查看一下更改結果
>db.collectionName.find()
將會發現修改後的文檔中就剩下id和name列了,而sn列不見了
原因:新文檔直接替換了舊的文檔,而不是修改
2)但是我們可以使用$set來指定修改某一列
>db.collectionName.update({name:‘guanyu‘},{$set:{name:‘guanyunchang‘}})
修改時的賦值運算式
$set 修改某個列的值
$unset 刪除某個列
$rename 重新命名某個列
$inc 增大某個列的值
3)來一個複雜的更新操作
先插入一條資料
>db.collectionName.insert({name:‘caocao‘,age:40,sex:‘m‘,addr:‘wei‘)
修改這條資料
>db.collectionName.update({name:‘caocao‘},{$set:{name:‘caoaman‘},$unset:{addr:1},$rename:{sex:‘gender‘},$inc:{age:10}})
4)第三個選擇性參數option的作用:
{upsert:true/false,multi:true/false}
upsert是指沒有匹配的行,則直接插入該行。(和mysql中的replace類似)
例如:
>db.collectionName.update({_id:100},{name:‘liubei‘},{upsert:true})
如果沒有_id為100的文檔,則直接插入該文檔。
注意:如果既沒有_id為100的文檔,又沒有upsert選擇性參數,則該跟新操作不會對錶中的文檔造成影響。
multi是指要不要改多行
即如果查詢運算式匹配到多行預設情況下只會更改一行,如果要想修改多行,則需要使用此選項。
例如:
>db.collectionName.update({sex:‘m‘},$set:{sex:‘w‘},{multi:true})
會把collectionName中所有sex=m的文檔都修改為sex=w
4.查操作:find,findOne
文法:db.collection.find(查詢運算式,查詢的列)
例如:
1)查詢所有文檔
>db.collectionName.find()
2)查詢所有文檔的sex屬性(列)
>db.collectionName.find({},{sex:1})
3)查詢所有文檔的sex屬性,不查詢_id屬性
>db.collectionName.find({},{sex:1,_id:0})
注意:無論增刪改查都離不開一個查詢運算式,以上的樣本都是比較簡單的入門操作
本文出自 “OMCloud” 部落格,請務必保留此出處http://10616534.blog.51cto.com/10606534/1939384
MongoDb的基本操作快速入門