国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MongoDB > 正文

MongoDB CRUD操作中的插入實例教程

2020-10-29 18:40:20
字體:
來源:轉載
供稿:網友

溫習了MongoDB的插入操作,主要使用PHP語言實踐。

目的

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

mongoDB shell

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

如果產生異常,則會返回writeConcernErrors和writeErrors兩種錯誤,有兩個細節。

如果是批量插入,ordered是true,則遇到一個錯誤,后面就不返回了,反之則會繼續運行,不過最終都會拋出異常。

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

再次強調,對于MongoDB來說,只能保證單個文檔插入是原子性的。另外MongoDB插入的文檔不存在,則會自動插件文檔。

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

PHP SDK

各個語言SDK和官方SHELL是差不多的,看的時候可以對照著看。

對于insertMany函數來說,如果處理正常返回的是MongoDB/InsertManyResult對象,它實際上是MongoDB/Driver/WriteResult 擴展的包裝。

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

對于異常來說,還有其他錯誤類型,比如MongoDB/Exception/InvalidArgumentException、MongoDB/Driver/Exception/RuntimeException。

最后通過一個例子來說明:

$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/

總結

到此這篇關于MongoDB CRUD操作中的插入的文章就介紹到這了,更多相關MongoDB CRUD操作插入內容請搜索武林網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西林县| 博乐市| 黄梅县| 临安市| 额敏县| 洞口县| 星座| 永年县| 沐川县| 遂昌县| 博兴县| 凤凰县| 昌邑市| 赤水市| 会同县| 西平县| 徐闻县| 白银市| 临朐县| 温宿县| 金塔县| 攀枝花市| 安溪县| 大同县| 兴国县| 灵川县| 中宁县| 台前县| 鹤峰县| 乐陵市| 宜兴市| 张家川| 敖汉旗| 元谋县| 襄城县| 巨野县| 巢湖市| 炎陵县| 揭西县| 华宁县| 会东县|