程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase教程 >> mongodb學習(Document數據操作)

mongodb學習(Document數據操作)

編輯:SyBase教程

mongodb學習(Document數據操作)


這篇博文主要學習mongodb中的Document的數據更新操作。包括了數據的”插入”,”更新”和”刪除”。

Document數據插入

插入一條數據到document文檔中用到的命令是”db.集合名稱.insert(on=bj)” ,如圖:
這裡寫圖片描述
從圖中可以看出在我插入一條數據之後,再次查詢發現確實添加到集合中了。

那麼如果我需要批量插入數據應該怎麼操作呢??我們在之前已經說過了,mongodb的客戶端shell實際上就是一個JavaScript引擎。因此我們可以通過for循環來執行操作。
這裡寫圖片描述
如上圖,我通過for循環實現批量插入數據的效果。

注意:
在mongodb中的插入中還存在一個save方法,那麼他和insert方法的區別在哪裡呢??什麼時候該用save,什麼時候又該用insert呢??
在我們進行插入操作的時候,如果使用save方法的時候,遇到”_id”相同的情況下save方法完成的是保存操作,如果使用insert方法,則會出錯。

Document數據刪除

刪除列表中的所有數據
如果我需要刪除列表中的所有數據,我可以這樣寫:
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為我們提供了很多修改器,用來實現數據的修改操作,下面是我在網上找到的一張關於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修改器
pushAll修改器的用法和push修改器比較相似,他是用來批量的添加數組數據,比如我需要給name=”xiaoming”的文檔中添加一個fruits[apple,orange,watermalon]這樣的數據,
這裡寫圖片描述

$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數據的操作部分,就學習到這裡了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved