1. 程式人生 > >MongoDB-批量寫操作

MongoDB-批量寫操作

概述

MongoDB提供了客戶端執行批量寫操作的能力. 批量寫操作影響單一集合. MongoDB允許應用程式決定歌可接受的批量操作確認請求等級.

New in version 3.2.

有序與無序操作

批量寫操作可以是有序或無序;

關於有序列表的操作, MongoDB 執行序列操作,如果寫操作的某個處理過程發生錯誤,MongoDB將返回但剩下的列表不會執行,檢視 ordered Bulk Write

關於無序列表的操作,MongoDB 可以按並行操作,但這種行為沒有保證.如果寫操作的某個處理過程發生錯誤, MongoDB 將繼續處理剩下的列表. 查查 Unordered Bulk Write

.

由於有序列表的操作需要等待之前的操作完成,後面的操作才能繼續,所以在分片集合上執行有序列表的操作通常比單一無序列表的操作速度要慢;

預設情況下, bulkWrite() 執行有序操作. 若要執行無序列表操作,請在文件選項中設定 ordered:false 

bulkWrite() 方法

每一個寫操作都傳入一個數組中包含文件的引數給 bulkWrite() .

示例, 以下執行多個寫入操作:

 characters 集合包含以下文件:

{ "_id" : 1, "char" : "Brisbane", "class" : "monk", "lvl" : 4 },
{ "_id" : 2, "char" : "Eldon", "class" : "alchemist", "lvl" : 3 },
{ "_id" : 3, "char" : "Meldane", "class" : "ranger", "lvl" : 3 }
try {
   db.characters.bulkWrite(
      [
         { insertOne :
            {
               "document" :
               {
                  "_id" : 4, "char" : "Dithras", "class" : "barbarian", "lvl" : 4
               }
            }
         },
         { insertOne :
            {
               "document" :
               {
                  "_id" : 5, "char" : "Taeln", "class" : "fighter", "lvl" : 3
               }
            }
         },
         { updateOne :
            {
               "filter" : { "char" : "Eldon" },
               "update" : { $set : { "status" : "Critical Injury" } }
            }
         },
         { deleteOne :
            { "filter" : { "char" : "Brisbane"} }
         },
         { replaceOne :
            {
               "filter" : { "char" : "Meldane" },
               "replacement" : { "char" : "Tanys", "class" : "oracle", "lvl" : 4 }
            }
         }
      ]
   );
}
catch (e) {
   print(e);
}

該操作返回如下:

{
   "acknowledged" : true,
   "deletedCount" : 1,
   "insertedCount" : 2,
   "matchedCount" : 2,
   "upsertedCount" : 0,
   "insertedIds" : {
      "0" : 4,
      "1" : 5
   },
   "upsertedIds" : {

   }
}

關於分片集合的批量新增的策略

大批量插入操作(包括初始資料插入或常規資料匯入)會影響分片叢集效能。對於批量插入,考慮以下策略::

預先分割集合

如果分片集合是空的,那麼集合只有一個初始化塊,它屬於一個單一分片。 MongoDB必須花時間接收資料,建立分割,分發分塊到可用分片上,為了避免效能損壞,你可以在分發分割塊前預分割集合;.

對 mongos無序寫入

 提高對分片集合的寫效能,使用 bulkWrite() 的選 項引數 ordered設定為falsemongos 可以試圖對多分片同時寫入. 對於空集合, 首先要預分割來描述分片叢集的分割塊的分發.

Avoid Monotonic Throttling

If your shard key increases monotonically during an insert, then all inserted data goes to the last chunk in the collection, which will always end up on a single shard. Therefore, the insert capacity of the cluster will never exceed the insert capacity of that single shard.

相關推薦

MongoDB-批量操作

概述 MongoDB提供了客戶端執行批量寫操作的能力. 批量寫操作影響單一集合. MongoDB允許應用程式決定歌可接受的批量操作確認請求等級. New in version 3.2. 有序與無序操作 批量寫操作可以是有序或無序; 關於有序列表的操作, Mong

mongodb陣列操作

mongodb中一條document格式為: 先想給陣列jobs新增一個元素,如{"job_name":"name1", "finish_time":1435043559} C++程式碼如下: shared_ptr<MongoSession> sess

mongodb批量操作, bulk_write,

req ups list mongo for god now() ear 網絡連接 需要批量操作時候,節省網絡連接交互次數,可以使用 bulk_write。 設置ordered=False,因為批量操作中沒有互相依賴關系,如果有氰胺後的互相依賴,需要設置為True。 b

mongodb操作無響應

問題:mongodb寫操作無響應,導致程式一直等待無法往下執行,無異常丟擲。 原因:mongodb使用了叢集,其中主伺服器掛掉,配置中WriteConcern丟擲異常的級別是MAJORITY,主伺服器無響應,導致寫操作一直等待主伺服器的影響,不繼續執行或丟擲異常。 解決方案:修改WriteC

知言 MongoDB首席架構師唐建法:20core處理27萬混合讀操作實現

MongoDB可以應用於各種規模的企業、各個行業以及各類應用程式的開源資料庫。作為一個適用於敏捷開發的資料庫,MongoDB的資料模式可以隨著應用程式的發展而靈活地更新。與此同時,它也為開發人員 提供了傳統資料庫的功能:二級索引,完整的查詢系統以及嚴格一致性等等

Python常用的文件讀操作和字符串操作

dir info load char 編碼 lines resolve values ror 文件讀寫操作 fileUtils.py # -*- coding: utf-8 -*- import os def getFileList(dir, fileList=[]):

第13章第2講文件讀操作

pla margin nbsp tchar img http blog fputs fop #include"stdio.h" main() { FILE *fp; if((fp=fopen("c1.txt","rt"))==NULL) {

C++文件讀操作

run -- 模式 ocr bin 第一個 輸出數據 con char 1、文件寫入   ofstream類:   ofstream( const char* szName, int nMode = ios::out, int nProt = filebuf::openpr

MFC文件讀操作

名稱 bsp 字節數 null tex 是否 功能 int cfi 1、相關類   CFile類 -封裝了文件句柄以及操作文件的API函數   CFileFind類 -封裝了文件搜索功能 2、CFile類的使用   2.1文件讀寫     1)創建或者打開文件       

文件的讀操作

二進制文件 tel 問題 找到 文件的 [0 操作 系統 讀取文件 1、文件的打開   FILE *fopen( const char *filename, const char *mode );     filename:指向文件名字符串的常量指針,表明將要打開的文件  

MongoDb的基本操作快速入門

基本操作 mongodb mongodb增刪該查操作示例 mongodb快速入門 1.MongoDb簡介 mongodb是一個基於分布式存儲的開源數據庫系統又被稱為文檔數據庫,可以將數據存儲為一個文檔,數據結構有鍵值對(key=>value)對組成,存儲的文檔類似於JSON對象(BS

node.js零基礎詳細教程(7):node.js操作mongodb,及操作方法的封裝

font 裏的 ges 格式 上進 ins 方法 回調函數 方式 第七章 建議學習時間4小時 課程共10章 學習方式:詳細閱讀,並手動實現相關代碼 學習目標:此教程將教會大家 安裝Node、搭建服務器、express、mysql、mongodb、編寫後臺業務邏輯、編寫接口

剖析Elasticsearch集群系列第一篇 Elasticsearch的存儲模型和讀操作

推薦 arch 變更 git 排序。 _id 包含 doc 現在 剖析Elasticsearch集群系列涵蓋了當今最流行的分布式搜索引擎Elasticsearch的底層架構和原型實例。 本文是這個系列的第一篇,在本文中,我們將討論的Elasticsearch的底層存儲模型及

Pthon 文件操作

Coding code pthon line nco blog utf-8 lose odin #文件寫模式f=open(‘a.txt‘,‘w‘,encoding=‘utf-8‘)#文件寫f.write(‘11111\n‘)f.write(‘2222\n‘)f.writ

FileStream 類讀操作

返回值 pos nco lin 字節數組 adk buffer spa txt 1.讀取     static void Main(string[] args) { /* * File類最大的問題是,一次性

Python—對Excel進行讀操作

href ace 需要 文件中 tle net 過程 ova 設置 學習Python的過程中,我們會遇到Excel的讀寫問題。通過搜索得知,我們可以使用xlwt module將數據寫入Excel表格,使用xlrd module從Excel讀取數據。下面介紹如何實現使用pyt

mongodb的基本操作

hang 默認 數據庫名 capped img .so 全部 html 文檔 查詢所有的數據庫 show dbs 指定到一個數據庫/或者創建 use 數據庫名 指定儲存大小 db.createCollection("mycoll",{capped:true,size 10

MongoDBMongoDB的一些操作命令

更新 use 使用 查看 count 一個 對象 分頁 ins 我們首先應該知道MongoDB的數據結構:MongoDB:庫-->集合-->JSON對象 查看 show dbs //查看有哪些庫 show collections //查看庫中有哪些

使用gdb進行操作

line and exit eof 自己 bug eas inf spa 使用gdb調試程序,讀寫操作是很普遍的事情。其中,讀操作包括: 讀取某個變量的值 讀取某個內存地址裏的內容 讀取某個寄存器的值 對應地,寫操作包括: 修改某個變量的值 修改某個內存地址裏的內容

使用WDS部署服務批量安裝操作系統

侯良金 windows服務 wds部署服務 使用WDS部署服務批量安裝操作系統一、什麽是WDS wds的全稱為Windows部署服務(Windows DEployment Services),主要應用於大中型網絡中的計算機操作系統的批量化部署。通過使用WDS可以管理