您好,登錄后才能下訂單哦!
這篇文章主要介紹了MongoDB怎么對Document插入、刪除及更新的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇MongoDB怎么對Document插入、刪除及更新文章都會有所收獲,下面我們一起來看看吧。
db.[文檔名].insert({BSON數據})
shell當中不支持批量插入,想完成批量插入操作,可以使用shell的for循環,或者其他高級語言當中的批量操作方法
例:使用for循環插入10個學生,在學生集合當中
我使用的是2.6的版本,發現已經支持了批量插入操作。
save操作和insert操作的區別在于,save在遇到_id相同的插入數據時候,會覆蓋原來的,而insert會提示錯誤
例子:
用insert的方法去插入一個_id相同的數據
db.[文檔名].remove({})
集合的本身和索引不會別刪除
例子:刪除列表中所有數據
例: 刪除_id為10的那條記錄
db.[文檔名].update({查詢器},{修改器})
{查詢器}就相當于是條件
{修改器}就是你要直接覆蓋替換的BSON數據
例:更新_id為9,那個學生,把Name變成age
注意:當主鍵沖突的時候會報錯并且停止更新操作
例:我用_id為8的數據,去替換_id為9的記錄,因為_id為8的數據已經存在,不允許有兩個主鍵為_id:8
的記錄,所以會報錯。
db.[文檔名].update({查詢器},{修改器},true)
后面第三個參數為true,就代表是當記錄不存在的時候,就插入一條記錄,如果存在就更新
例:更新一個_id為10的數據,沒有就插入,有就更新
db.[文檔名].update({查詢器},{修改器},false, true)
※默認情況當查詢器查詢出多條數據的時候默認就修改第一條數據
先修改一下數據如下:
讓_id為9和10的數據,有相同的內容
再插入一個_id=11,age=20的數據
第四個參數不寫的情況下去更新:
如下:只能更新第一個age=20的數據
第四個參數添加并且為true的時候,我們預期是10和11都能被修正
但是當我試圖去更新的時候,報錯了,提示說批量更新只能在有$操作的時候使用
修正插入語句
這里注意$set后面要有":",而且它和它后面的修改器要被{}包起來,因為我第一次使用mongoDB,所以總寫錯。
$set它用來指定一個鍵值對,如果存在鍵就進行修改不存在則進行添加
{$set:{field:value}}
_id為10的數據,沒有Name屬性,進行了添加,有age鍵,就進行了修改
$inc
1.適用于數字類型
2.能夠對鍵對應的數字類型數值進行加減操作
{$inc:{field:value}}
給age=30的數據增加2歲,由于沒有使用批量更新參數,所以默認修正了第一條
$unset刪除指定的鍵
{$unset:{field:1}}
我在例子里面先是刪除了age=30的數據的age屬性,但是有一點不明白,unset后面那個field:1是什么,于是我查了一下,說是后面是什么都無所謂,unset只看鍵不看value,于是又做了第二個例子
$push
1.如果指定的鍵是數組增追加新的數值
2.如果指定的鍵不是數組則中斷當前操作,報錯
3.如果不存在指定的鍵則創建數組類型的鍵值對
{$push:{field:value}}
$pushAll
用法同上,是批量添加數組數據的操作
{$pushAll:{field:array}}
1.第一個操作沒有用$pushAll,所以把["C#","JAVA"]當成一個數組項目處理了
2.第二個操作使用了$pushAll,所以當成了兩項來處理的。
$addToSet
往數組中添加項目,存在就不添加,不存在就添加(push不管存不存在都添加)
{$addToSet:{field:value}}
1.先用push插入,發現更新完成后有兩個“C#”
2.再用addToSet更新,發現沒有增加項目
$pop
從指定數組刪除一個值1刪除最后一個數值,-1刪除第一個數值
{$pop:{field:value}}
1.刪除最后一個索引位置的數據,后面的value用"1"
2.刪除第一位置索引的數據,value=-1
$pull
push的逆向操作,刪除鍵是數組的項目中的指定元素
{$pull:{field:value}}
$pullAll
批量刪除數組中的指定元素
{$pullAll:{field:array}}
$ 數組定位器,如果數組有多個數值我們只想對其中一部分進行操作我們就要用到定位器($)
{$push:{field:value}}
1.實例第一個是在剛剛清空的數組里面添加了兩個元素
2.我想在{“SubID”:1,"SubName":"MangoDB"}這個對象里面再添加"Teacher":"Lucy"
理解:首先從上面的例子中我們知道,addToSet這個修改器,可以判斷是否項目存在,不存在的時候就直接插入。
此時我有一個功能,例如我想往一個存在數據的數組中批量更新數據,如果存在就不更新。那么只使用addToSet是不能進行批量的,于是就要結合$each來實現。
例:
1.新創建一個文件,并使用pushAll修改器添加數據:
2.我想要批量插入"C#","PHP","JavaScript","JAVA",要求不能有重復的
如果這時候我直接用pushAll來進行更新的話,"C#"和"JAVA"就會有重復
在shell當中輸入如下命令:
關于“MongoDB怎么對Document插入、刪除及更新”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“MongoDB怎么對Document插入、刪除及更新”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。