欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB對(duì)Document(文檔)的插入、刪除及更新

 更新時(shí)間:2022年07月08日 15:09:04   作者:奮斗的大橙子  
這篇文章介紹了MongoDB對(duì)Document(文檔)的插入、刪除及更新,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一.Document數(shù)據(jù)插入

1.插入文檔

db.[文檔名].insert({BSON數(shù)據(jù)})

2.批量插入文檔

shell當(dāng)中不支持批量插入,想完成批量插入操作,可以使用shell的for循環(huán),或者其他高級(jí)語言當(dāng)中的批量操作方法

例:使用for循環(huán)插入10個(gè)學(xué)生,在學(xué)生集合當(dāng)中

我使用的是2.6的版本,發(fā)現(xiàn)已經(jīng)支持了批量插入操作。

3.Save操作

save操作和insert操作的區(qū)別在于,save在遇到_id相同的插入數(shù)據(jù)時(shí)候,會(huì)覆蓋原來的,而insert會(huì)提示錯(cuò)誤

例子:

用insert的方法去插入一個(gè)_id相同的數(shù)據(jù)

二.Document數(shù)據(jù)刪除

1.刪除列表中所有數(shù)據(jù)

db.[文檔名].remove({})

集合的本身和索引不會(huì)別刪除

例子:刪除列表中所有數(shù)據(jù)

2.根據(jù)條件刪除

例: 刪除_id為10的那條記錄

三.Document數(shù)據(jù)更新

1.直接覆蓋更新

db.[文檔名].update({查詢器},{修改器})

{查詢器}就相當(dāng)于是條件

{修改器}就是你要直接覆蓋替換的BSON數(shù)據(jù)

例:更新_id為9,那個(gè)學(xué)生,把Name變成age

注意:當(dāng)主鍵沖突的時(shí)候會(huì)報(bào)錯(cuò)并且停止更新操作

例:我用_id為8的數(shù)據(jù),去替換_id為9的記錄,因?yàn)開id為8的數(shù)據(jù)已經(jīng)存在,不允許有兩個(gè)主鍵為_id:8

的記錄,所以會(huì)報(bào)錯(cuò)。

2.采用insertOrUpdate的做法進(jìn)行更新

db.[文檔名].update({查詢器},{修改器},true)

后面第三個(gè)參數(shù)為true,就代表是當(dāng)記錄不存在的時(shí)候,就插入一條記錄,如果存在就更新

例:更新一個(gè)_id為10的數(shù)據(jù),沒有就插入,有就更新

3.批量更新操作

db.[文檔名].update({查詢器},{修改器},false, true)

※默認(rèn)情況當(dāng)查詢器查詢出多條數(shù)據(jù)的時(shí)候默認(rèn)就修改第一條數(shù)據(jù)

先修改一下數(shù)據(jù)如下:

讓_id為9和10的數(shù)據(jù),有相同的內(nèi)容

再插入一個(gè)_id=11,age=20的數(shù)據(jù)

第四個(gè)參數(shù)不寫的情況下去更新:

如下:只能更新第一個(gè)age=20的數(shù)據(jù)

第四個(gè)參數(shù)添加并且為true的時(shí)候,我們預(yù)期是10和11都能被修正

但是當(dāng)我試圖去更新的時(shí)候,報(bào)錯(cuò)了,提示說批量更新只能在有$操作的時(shí)候使用

修正插入語句

這里注意$set后面要有":",而且它和它后面的修改器要被{}包起來,因?yàn)槲业谝淮问褂胢ongoDB,所以總寫錯(cuò)。

4.使用修改器來完成局部更新操作

$set它用來指定一個(gè)鍵值對(duì),如果存在鍵就進(jìn)行修改不存在則進(jìn)行添加

{$set:{field:value}}

_id為10的數(shù)據(jù),沒有Name屬性,進(jìn)行了添加,有age鍵,就進(jìn)行了修改

$inc

1.適用于數(shù)字類型

2.能夠?qū)︽I對(duì)應(yīng)的數(shù)字類型數(shù)值進(jìn)行加減操作

{$inc:{field:value}}

給age=30的數(shù)據(jù)增加2歲,由于沒有使用批量更新參數(shù),所以默認(rèn)修正了第一條

$unset刪除指定的鍵

{$unset:{field:1}}

我在例子里面先是刪除了age=30的數(shù)據(jù)的age屬性,但是有一點(diǎn)不明白,unset后面那個(gè)field:1是什么,于是我查了一下,說是后面是什么都無所謂,unset只看鍵不看value,于是又做了第二個(gè)例子

$push

1.如果指定的鍵是數(shù)組增追加新的數(shù)值

2.如果指定的鍵不是數(shù)組則中斷當(dāng)前操作,報(bào)錯(cuò)

3.如果不存在指定的鍵則創(chuàng)建數(shù)組類型的鍵值對(duì)

{$push:{field:value}}

$pushAll

用法同上,是批量添加數(shù)組數(shù)據(jù)的操作

{$pushAll:{field:array}}

1.第一個(gè)操作沒有用$pushAll,所以把["C#","JAVA"]當(dāng)成一個(gè)數(shù)組項(xiàng)目處理了

2.第二個(gè)操作使用了$pushAll,所以當(dāng)成了兩項(xiàng)來處理的。

$addToSet

往數(shù)組中添加項(xiàng)目,存在就不添加,不存在就添加(push不管存不存在都添加)

{$addToSet:{field:value}}

1.先用push插入,發(fā)現(xiàn)更新完成后有兩個(gè)“C#”

2.再用addToSet更新,發(fā)現(xiàn)沒有增加項(xiàng)目

$pop

從指定數(shù)組刪除一個(gè)值1刪除最后一個(gè)數(shù)值,-1刪除第一個(gè)數(shù)值

{$pop:{field:value}}

1.刪除最后一個(gè)索引位置的數(shù)據(jù),后面的value用"1"

2.刪除第一位置索引的數(shù)據(jù),value=-1

$pull

push的逆向操作,刪除鍵是數(shù)組的項(xiàng)目中的指定元素

{$pull:{field:value}}

$pullAll

批量刪除數(shù)組中的指定元素

{$pullAll:{field:array}}

$ 數(shù)組定位器,如果數(shù)組有多個(gè)數(shù)值我們只想對(duì)其中一部分進(jìn)行操作我們就要用到定位器($)

{$push:{field:value}}

1.實(shí)例第一個(gè)是在剛剛清空的數(shù)組里面添加了兩個(gè)元素

2.我想在{“SubID”:1,"SubName":"MangoDB"}這個(gè)對(duì)象里面再添加"Teacher":"Lucy"

5.$addToSet與$each結(jié)合完成批量數(shù)組更新

理解:首先從上面的例子中我們知道,addToSet這個(gè)修改器,可以判斷是否項(xiàng)目存在,不存在的時(shí)候就直接插入。

此時(shí)我有一個(gè)功能,例如我想往一個(gè)存在數(shù)據(jù)的數(shù)組中批量更新數(shù)據(jù),如果存在就不更新。那么只使用addToSet是不能進(jìn)行批量的,于是就要結(jié)合$each來實(shí)現(xiàn)。

例:

1.新創(chuàng)建一個(gè)文件,并使用pushAll修改器添加數(shù)據(jù):

2.我想要批量插入"C#","PHP","JavaScript","JAVA",要求不能有重復(fù)的

如果這時(shí)候我直接用pushAll來進(jìn)行更新的話,"C#"和"JAVA"就會(huì)有重復(fù)

在shell當(dāng)中輸入如下命令:

總結(jié):以上就是MongoDB的Document的插入、刪除以及更新的使用。

到此這篇關(guān)于MongoDB操作Document的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 深入了解MongoDB是如何存儲(chǔ)數(shù)據(jù)的

    深入了解MongoDB是如何存儲(chǔ)數(shù)據(jù)的

    MongoDB是一個(gè)可擴(kuò)展、高性能的分布式文檔存儲(chǔ)數(shù)據(jù)庫,由C 語言編寫,下面這篇文章主要給大家介紹了關(guān)于MongoDB是如何存儲(chǔ)數(shù)據(jù)的相關(guān)資料,文中介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • MongoDB數(shù)據(jù)庫文檔操作方法(必看篇)

    MongoDB數(shù)據(jù)庫文檔操作方法(必看篇)

    下面小編就為大家?guī)硪黄狹ongoDB數(shù)據(jù)庫文檔操作方法(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • 解決net start MongoDB 報(bào)錯(cuò)之服務(wù)名無效的問題

    解決net start MongoDB 報(bào)錯(cuò)之服務(wù)名無效的問題

    這篇文章主要介紹了解決net start MongoDB 報(bào)錯(cuò)之服務(wù)名無效的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • MongoDB中的一些坑(最好不要用)

    MongoDB中的一些坑(最好不要用)

    這篇文章主要介紹了MongoDB中的一些坑(最好不要用),本文總結(jié)了MongoDB 數(shù)據(jù)庫級(jí)鎖、建索引導(dǎo)致數(shù)據(jù)庫阻塞、不合理使用嵌入 embed document、不合理使用 Array 字段等4個(gè)坑,需要的朋友可以參考下
    2015-03-03
  • MongoDB aggregate 運(yùn)用篇個(gè)人總結(jié)

    MongoDB aggregate 運(yùn)用篇個(gè)人總結(jié)

    最近一直在用mongodb,有時(shí)候會(huì)需要用到統(tǒng)計(jì),在網(wǎng)上查了一些資料,最適合用的就是用aggregate,以下介紹一下自己運(yùn)用的心得
    2016-11-11
  • centos6.5中安裝mongodb簡(jiǎn)明總結(jié)

    centos6.5中安裝mongodb簡(jiǎn)明總結(jié)

    這篇文章主要介紹了centos6.5中安裝mongodb簡(jiǎn)明總結(jié),本文簡(jiǎn)單的總結(jié)了安裝過程中的6個(gè)步驟,需要的朋友可以參考下
    2014-10-10
  • MongoDB入門教程之分片技術(shù)詳解

    MongoDB入門教程之分片技術(shù)詳解

    這篇文章主要介紹了MongoDB入門教程之分片技術(shù)詳解,分片是mongodb中的另一種集群技術(shù),需要的朋友可以參考下
    2014-08-08
  • MongoDB數(shù)據(jù)庫的特色和優(yōu)點(diǎn)介紹

    MongoDB數(shù)據(jù)庫的特色和優(yōu)點(diǎn)介紹

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫的特色和優(yōu)點(diǎn)介紹,本文總結(jié)了每個(gè)開發(fā)人員都應(yīng)該知道的5個(gè)MongoDB特點(diǎn),需要的朋友可以參考下
    2015-05-05
  • mongodb啟動(dòng)方法小結(jié)

    mongodb啟動(dòng)方法小結(jié)

    這篇文章主要介紹了mongodb啟動(dòng)方法小結(jié),啟動(dòng)Mongodb服務(wù)有兩種方式,前臺(tái)啟動(dòng)或者Daemon方式啟動(dòng),每種方式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • MongoDB的分片集群基本配置教程

    MongoDB的分片集群基本配置教程

    MongoDB擁有經(jīng)典的Sharding架構(gòu)能將數(shù)據(jù)分散存儲(chǔ)在數(shù)個(gè)服務(wù)器上以作集群,這里我們就來看一下MongoDB的分片集群基本配置教程:
    2016-07-07

最新評(píng)論