本文主要介紹MongoDB數(shù)據(jù)庫(kù)增刪改查操作,
MongoDB之增刪改查(一)
。增
mongoDB和其他關(guān)系型數(shù)據(jù)庫(kù)一樣,通過(guò)insert來(lái)增加數(shù)據(jù)到集合中去。
<code class="hljs avrasm">db.collectionName.insert(內(nèi)容)</code>
顯示數(shù)據(jù)庫(kù)中所有集合:
<code class="hljs avrasm"><code class="hljs sql">show collections</code></code>
<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxociAvPg0KPGgyIGlkPQ=="刪">刪
MongoDB中通過(guò)remove來(lái)刪除集合中符合一定條件的文檔。
remove接受一個(gè)參數(shù),作為尋找要?jiǎng)h除文檔的條件:
當(dāng)然了,也可以直接刪除一整個(gè)集合,通過(guò)drop方法:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm">db.person.drop()</code></code></code>
刪除集合然后重建索引比刪除集合中所有的文檔速度要快。
改
改
修改操作相比增加和刪除而言較為復(fù)雜,因?yàn)镸ongoDB不僅僅可以使用update方法,還可以使用很多的輔助修改器,我們先來(lái)說(shuō)說(shuō)update方法。
update
update
update方法接受兩個(gè)參數(shù),第一個(gè)是找到文檔的限定條件,第二個(gè)需要修改的新文檔:
上面update中的({“name”:”liufang”},post),中的name:liufang相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的where中的判斷條件,而post則相對(duì)于set語(yǔ)句后的執(zhí)行內(nèi)容。
更新最簡(jiǎn)單的就是使用一個(gè)新文檔來(lái)替代匹配的文檔,這適用于模式結(jié)構(gòu)發(fā)生較大變化的時(shí)候.如將下面的文檔:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript">{ "name":"tyq", "age":22, “date”:new Date()}</code></code></code></code>
修改為:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash">{ "name":"tyq", “age”:22, “friends”:”liufang”}</code></code></code></code></code>
如下圖:
修改器
修改器
再來(lái)談?wù)凪ongoDB強(qiáng)大的修改器。
MongoDB有著一些輔助修改器,比如
$inc
$inc
$inc用來(lái)增加和減少鍵或者值。
當(dāng)其用來(lái)增加已有鍵的值時(shí),如果不存在鍵,就增加該鍵。通常用于分析數(shù)據(jù),投票等位置。如:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm">db.person.insert( {"url":"blog.csdn.net/mevicky"})</code></code></code></code></code></code>
使用$inc增加一個(gè)鍵pageViews,默認(rèn)值為10000
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( {"url":"blog.csdn.net/mevicky"}, {"$inc":{"pageViews":10000}})</code></code></code></code></code></code></code>
使用$inc給鍵pageViews再添加10000
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( {"url":"blog.csdn.net/mevicky"}, {"$inc":{"pageViews":10000}})</code></code></code></code></code></code></code></code>
也可以使用$inc給鍵pageViews減少10000
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( {"url":"blog.csdn.net/mevicky"}, {"$inc":{"pageViews":-10000}})</code></code></code></code></code></code></code></code></code>
示例如下:
$set
$set
$set用來(lái)指定一個(gè)鍵的值,如果鍵不存在,則創(chuàng)建該鍵,一般用于更新值或者增加新定義的鍵。如:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.insert( { "name":"lf", "age":23, "sex":"male" })</code></code></code></code></code></code></code></code></code></code>
添加喜歡的書(shū)籍:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( { "name":"lf" }, { "$set":{"book":"war and peace"} })</code></code></code></code></code></code></code></code></code></code></code>
修改喜歡的書(shū)籍:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( { "name":"lf" }, { "$set":{"book":"war and peace2"} })</code></code></code></code></code></code></code></code></code></code></code></code>
示例如下:
$unset
$unset
$unset用于將鍵刪除,如果沒(méi)有找到也不會(huì)報(bào)錯(cuò),
電腦資料
《MongoDB之增刪改查(一)》(http://www.oriental01.com)。
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( { "name":"lf" }, { "$unset":{"book":1} })</code></code></code></code></code></code></code></code></code></code></code></code></code>
$push
$push
例如,向以上文檔中,添加一個(gè)包含一個(gè)數(shù)組的”comment”鍵,還向 comment 數(shù)組push一個(gè)評(píng)論.
這個(gè)數(shù)組會(huì)自動(dòng)創(chuàng)建,并加入評(píng)論:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm">db.person.update( {"name":"lf"}, { $push: { "comments": { "name":"tyq", "content":"nice" } } })</code></code></code></code></code></code></code></code></code></code></code></code></code></code>
示例如下:
$pop
$pop
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs php">{$pop:{key:1}}//從數(shù)組末尾刪除一個(gè)元素{$pop:{key:-1}}//從數(shù)組頭部刪除一個(gè)元素</code></code></code></code></code></code></code></code></code></code></code></code></code></code></code>
$pull
$pull
$pull可以根據(jù)指定的特定條件刪除元素,也可以根據(jù)位置刪除元素:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs php"><code class="hljs perl">db.person.update( {"name":"lf"}, { "$pull": { "emails":"362512489@qq.com" } })</code></code></code></code></code></code></code></code></code></code></code></code></code></code></code></code>
$pull會(huì)將所有匹配的部分刪掉,比如數(shù)組【1,2,3,4,4,4】,執(zhí)行pull 4后,得到的數(shù)組是【1,2,3】
$addToSet
$addToSet
$addToSet用于向數(shù)組添加數(shù)據(jù),如果數(shù)組中有,則不再重復(fù)添加。
$each
$each
$each用來(lái)運(yùn)行修改器向集合多次操作數(shù)據(jù),可以利用$addToSet和$each一起來(lái)添加不同的值:
<code class="hljs avrasm"><code class="hljs sql"><code class="hljs avrasm"><code class="hljs vbscript"><code class="hljs bash"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs avrasm"><code class="hljs php"><code class="hljs perl"><code class="hljs perl">db.users.update( {"name":"lf"}, { "$addToSet": { "emails": { "$each": [ "362512489@111.com", "362512489@112.com", "362512489@113.com" ] } } })</code></code></code></code></code></code></code></code></code></code></code></code></code></code></code></code></code>