亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MongoDB CRUD操作中的插入實(shí)例教程

 更新時(shí)間:2020年07月15日 08:48:28   作者:虞大膽  
這篇文章主要給大家介紹了關(guān)于MongoDB CRUD操作中的插入的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

溫習(xí)了MongoDB的插入操作,主要使用PHP語(yǔ)言實(shí)踐。

目的

  • 理解官方shell和PHP SDK操作的差異
  • 以MySQL的思維理解MongoDB的shell,感覺差異還是很大的
  • 理解有多少種插入操作,以及差異點(diǎn)
  • 重點(diǎn)理解異常操作,如何看官方文檔

mongoDB shell

insertMany()、insert()、insertOne()三個(gè)方法大體上是差不多的,insertMany()相當(dāng)于批處理,insertOne()是插入當(dāng)個(gè),這兩個(gè)函數(shù)返回的對(duì)象沒有明確指示,insert()相當(dāng)于批處理,如果插入的是單個(gè)文檔,返回的是WriteResult對(duì)象,如果是多個(gè)文檔返回BulkWriteResult對(duì)象(真正的批量操作)。

如果產(chǎn)生異常,則會(huì)返回writeConcernErrors和writeErrors兩種錯(cuò)誤,有兩個(gè)細(xì)節(jié)。

如果是批量插入,ordered是true,則遇到一個(gè)錯(cuò)誤,后面就不返回了,反之則會(huì)繼續(xù)運(yùn)行,不過(guò)最終都會(huì)拋出異常。

其次遇到異常就不會(huì)返回_ids,這一點(diǎn)覺得特別讓人難以理解,若何知曉插入了那些ID?

再次強(qiáng)調(diào),對(duì)于MongoDB來(lái)說(shuō),只能保證單個(gè)文檔插入是原子性的。另外MongoDB插入的文檔不存在,則會(huì)自動(dòng)插件文檔。

db.collection.insertMany(
  [ <document 1> , <document 2>, ... ],
  {
   writeConcern: <document>,
   ordered: <boolean>
  }
)

PHP SDK

各個(gè)語(yǔ)言SDK和官方SHELL是差不多的,看的時(shí)候可以對(duì)照著看。

對(duì)于insertMany函數(shù)來(lái)說(shuō),如果處理正常返回的是MongoDB\InsertManyResult對(duì)象,它實(shí)際上是MongoDB\Driver\WriteResult 擴(kuò)展的包裝。

如果遇到異常,可以通過(guò) MongoDB\Driver\Exception\WriteException::getWriteResult 擴(kuò)展方法獲取,它返回的實(shí)際上也是MongoDB\Driver\WriteResult對(duì)象。該對(duì)象的getWriteConcernError、getWriteErrors函數(shù)可以獲取具體的錯(cuò)誤信息,從而決定程序如何處理。

對(duì)于異常來(lái)說(shuō),還有其他錯(cuò)誤類型,比如MongoDB\Exception\InvalidArgumentException、MongoDB\Driver\Exception\RuntimeException。

最后通過(guò)一個(gè)例子來(lái)說(shuō)明:

$obj = $collection->insertMany(
  [
   [
      '_id' => "5f03014f73efc304f72dc6e2",
      'email' => 'admin@example.com',
    ],
    [
      'username' => 'test',
      'email' => 'test@example.com',
    ]
  ],[ "ordered"=>false]
  );
  $obj->getInsertedCount();
  $obj->getInsertedId();
} catch (\MongoDB\Exception\InvalidArgumentExceptio $e) {
} catch (\Exception $e) {
  $obj = $e->getWriteResult();
  $data_1 = $obj->getWriteErrors();
  $data_2 = $obj->getInsertedCount();
  $data_3 = $obj->getUpsertedIds();
}

整體上和官方文檔描述沒有太大的差異。

參考:

  • https://www.php.net/mongodb-driver-writeexception.getwriteresult
  • https://www.php.net/class.mongodb-driver-writeresult
  • https://docs.mongodb.com/manual/reference/method/db.collection.insertMany/
  • https://docs.mongodb.com/php-library/v1.4/reference/method/MongoDBCollection-insertMany/

總結(jié)

到此這篇關(guān)于MongoDB CRUD操作中的插入的文章就介紹到這了,更多相關(guān)MongoDB CRUD操作插入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MongoDB查詢之高級(jí)操作詳解(多條件查詢、正則匹配查詢等)

    MongoDB查詢之高級(jí)操作詳解(多條件查詢、正則匹配查詢等)

    這篇文章主要給大家介紹了關(guān)于MongoDB查詢之高級(jí)操作(多條件查詢、正則匹配查詢等)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Mongodb 如何將時(shí)間戳轉(zhuǎn)換為年月日日期

    Mongodb 如何將時(shí)間戳轉(zhuǎn)換為年月日日期

    這篇文章主要介紹了Mongodb 如何將時(shí)間戳轉(zhuǎn)換為年月日日期,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • MongoDB中的加減乘除運(yùn)算詳解

    MongoDB中的加減乘除運(yùn)算詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB中加減乘除運(yùn)算的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • CentOS7下安裝MongoDB數(shù)據(jù)庫(kù)過(guò)程

    CentOS7下安裝MongoDB數(shù)據(jù)庫(kù)過(guò)程

    大家好,本篇文章主要講的是CentOS7下安裝MongoDB數(shù)據(jù)庫(kù)過(guò)程,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MongoDB查詢技巧總結(jié)

    MongoDB查詢技巧總結(jié)

    這篇文章主要介紹了MongoDB查詢技巧總結(jié),例如AND、OR條件查詢,子文檔查詢等,需要的朋友可以參考下
    2014-05-05
  • mongodb 數(shù)據(jù)類型(null/字符串/數(shù)字/日期/內(nèi)嵌文檔/數(shù)組等)

    mongodb 數(shù)據(jù)類型(null/字符串/數(shù)字/日期/內(nèi)嵌文檔/數(shù)組等)

    MongoDB的文檔類似于JSON,JSON只是一種簡(jiǎn)單的表示數(shù)據(jù)的方式,只包含了6種數(shù)據(jù)類型(null、布爾、數(shù)字、字符串、數(shù)組及對(duì)象),需要的朋友可以參考下
    2017-04-04
  • 解決MongoDB占用內(nèi)存過(guò)大頻繁死機(jī)的方法詳解

    解決MongoDB占用內(nèi)存過(guò)大頻繁死機(jī)的方法詳解

    這篇文章主要介紹了解決MongoDB占用內(nèi)存過(guò)大頻繁死機(jī)的方法詳解,需要的朋友可以參考下
    2020-02-02
  • Mongodb自增id實(shí)現(xiàn)方法

    Mongodb自增id實(shí)現(xiàn)方法

    這篇文章主要介紹了Mongodb自增id實(shí)現(xiàn)方法,分析了MongoDB數(shù)據(jù)庫(kù)自增ID的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • MongoDB磁盤IO問(wèn)題的3種解決方法

    MongoDB磁盤IO問(wèn)題的3種解決方法

    磁盤IO是不可避免的,除去減少或延緩磁盤操作,也需要盡量的增強(qiáng)磁盤IO性能和吞吐量。下面這篇文章主要給大家介紹了關(guān)于MongoDB磁盤IO問(wèn)題的3種解決方法,需要的朋友可以參考借鑒,需要的朋友們下面來(lái)一起看看吧
    2018-07-07
  • MongoDB操作符中的$elemMatch問(wèn)題

    MongoDB操作符中的$elemMatch問(wèn)題

    這篇文章主要介紹了MongoDB操作符中的$elemMatch問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論