婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MongoDB CRUD操作中的插入實例教程

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

熱門標簽:呼和浩特外呼系統原理是什么 小裙科技電銷機器人怎樣 crm外呼系統聯系方式 河南電話外呼系統招商 外呼線路資源屬于電信業務嗎 青白江400企業電話申請 智能外呼系統官網 長沙電銷外呼防封卡是什么 內蒙古營銷智能外呼系統哪個好

溫習了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操作插入內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Springboot整合MongoDB進行CRUD操作的兩種方式(實例代碼詳解)
  • MongoDB的基本操作實例詳解【服務端啟動,客戶端連接,CRUD操作】
  • mongoDB中CRUD的深入講解
  • MongoDB 常用的crud操作語句

標簽:呼倫貝爾 黃石 安順 白山 池州 楚雄 菏澤 舟山

巨人網絡通訊聲明:本文標題《MongoDB CRUD操作中的插入實例教程》,本文關鍵詞  MongoDB,CRUD,操作,中的,插入,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB CRUD操作中的插入實例教程》相關的同類信息!
  • 本頁收集關于MongoDB CRUD操作中的插入實例教程的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 台东县| 无棣县| 望城县| 丹凤县| 阳朔县| 江西省| 绥芬河市| 涿鹿县| 会同县| 淮滨县| 长治市| 光山县| 福州市| 二连浩特市| 团风县| 遵义县| 鄯善县| 沙洋县| 沧源| 灵石县| 贺兰县| 金山区| 桓仁| 临高县| 平度市| 额济纳旗| 阿拉善右旗| 都兰县| 陈巴尔虎旗| 肥东县| 会泽县| 平山县| 昭苏县| 定陶县| 博客| 三都| 西充县| 库车县| 昔阳县| 张家界市| 平定县|