這篇博文主要學習mongodb中的Document的數據更新操作。包括了數據的”插入”,”更新”和”刪除”。
插入一條數據到document文檔中用到的命令是”db.集合名稱.insert(on=bj)” ,如圖:
從圖中可以看出在我插入一條數據之後,再次查詢發現確實添加到集合中了。
那麼如果我需要批量插入數據應該怎麼操作呢??我們在之前已經說過了,mongodb的客戶端shell實際上就是一個JavaScript引擎。因此我們可以通過for循環來執行操作。
如上圖,我通過for循環實現批量插入數據的效果。
注意:
在mongodb中的插入中還存在一個save方法,那麼他和insert方法的區別在哪裡呢??什麼時候該用save,什麼時候又該用insert呢??
在我們進行插入操作的時候,如果使用save方法的時候,遇到”_id”相同的情況下save方法完成的是保存操作,如果使用insert方法,則會出錯。
刪除列表中的所有數據
如果我需要刪除列表中的所有數據,我可以這樣寫:
db.students.remove({})
注意這樣只是刪除了數據,索引並沒有刪除。
根據條件刪除數據:
如果需要根據條件刪除集合中的數據,可以這樣寫:
db.students.remove({條件})
可以看到,我首先添加了兩條數據,然後刪除age=11的那條數據,再次重新查詢發現確實被刪除了。<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KCgoKPGgyIGlkPQ=="update操作">Update操作
update方法,顧名思義,就是當我執行該方法的時候,會首先根據該方法的查詢條件進行查詢,如果查詢到了,則執行更新操作,如果沒有查詢到,則執行插入操作。
語法:db.集合名稱.update({查詢器},{修改器},true)
注意,如果想要讓update方法有這樣的特性,那麼必須第三個參數填寫上true。
可以看到當我的第三個參數設置為true的時候,此時,當我更新一個age=33的數據,沒有查找到該數據的時候,會執行插入操作。
注意:
如果我利用update方法來更新數據的時候,如果此時有多條數據滿足查詢器,mongodb只會默認為我們更新第一條數據。比如:
從圖中可以看出:我更新name=”wangwu”的數據,發現只有第一條滿足條件的數據更新了,那麼如果我需要批量更新,應該怎麼操作呢??
可以這樣寫:
db.students.update({查詢條件},{$set:{更新數據}},是否insertOrUpdate,是否批量更新)
可以看到這裡用到了$set修改器。如下圖:
mongodb為我們提供了很多修改器,用來實現數據的修改操作,下面是我在網上找到的一張關於mongodb的修改器。
$set:用來指定一個鍵值對,如果存在則修改,如果不存在則進行添加操作。如下圖:
根據圖片,我首先為name=”xiaoming”的更新一個age=44的數據,這個時候由於該條數據沒有這個age鍵,所以會為該條數據添加age=44的鍵值對, 然而當我為name=”lisi”的數據設置age=25的時候,由於該條數據已經有了age這個鍵,所以會更新該鍵值對。
$inc:用來為指定的鍵對應的數字類型的數值進行加減操作,如下圖:
從圖中,可以看出,我為name=”xiaoming”的這條數據,利用$inc修改器來將該條數據的age鍵的值+2,如果需要減去2,則填寫-2即可。
$unset:刪除指定的鍵,如下圖:
可以看到,我們將name=”xiaoming”的這條數據的age這個鍵成功去掉了。
$push修改器
$push修改器:
1.如果指定的鍵是數組,則追加新的數值。
2.如果指定的鍵不是數組,則中斷當前操作。
3.如果不存在指定的鍵,則創建數組類型的鍵值對。
此時我利用$push修改器分別執行兩次更新操作,第一次,沒有scores這個鍵,所以創建了一個數組類型的鍵值對,第二次,由於已經存在這個鍵,所以會繼續追加。
$pushAll修改器
$addToSet修改器
$pushAll:當數組中存在需要添加的值,則什麼都不做,如果數組中沒有需要修改的值,則進行添加操作。
可以看到,當我第一次通過$addToSet修改器,為scores數組添加值為100的數據,由於已經存在這個值,所以什麼都沒有做,當我第二次添加值是88的數據,此時會添加進去。
$pop修改器
$pop修改器:從指定的數組中刪除一個值:1表示最後一個值,-1表示第一個值。
可以看到,當我刪除fruits數組中的數據,1表示刪除最後一個,-1表示刪除第一個。
$pull修改器
$pull修改器:用來刪除一個指定的數值
我在這裡,在執行$pull修改器刪除fruits中orange這個值得前後,分別執行了”db.student.find()”發現已經成功刪除。
$pullAll修改器
$pullAll修改器:用來刪除數組中所有的數據
ok,今天關於mongodb中document數據的操作部分,就學習到這裡了。