MongoDB學習筆記~批量插入方法的實現

來源:互聯網
上載者:User

標籤:

回到目錄

批量插入在EF時代大叔就自己封裝過,原理是將多次SQL串連和多次向SQL發送的指令減少到1次,或者1000條資料1次,而對於EF產生的語句來說,這無疑是效能高效的,因為EF這邊在處理時,每個語句都會向SQL發送一次,當然就算它是在一個SQL串連裡,向SQL發送N多條指令,也是效能低下的。

對於MongoDB來說也是一樣,如何減少與Mongo通訊的次數,是提高插入操作的前提,還好,官方驅動為我們繼承了這個功能,使用WriteModel類型來儲存要插入的集合,使用InsertOneModel類型來承載要插入的對象,這一切都很直觀,代碼也很清晰!

     public void Insert(IEnumerable<TEntity> item)        {            var list = new List<WriteModel<TEntity>>();            foreach (var iitem in item)            {                list.Add(new InsertOneModel<TEntity>(iitem));            }            _table.BulkWriteAsync(list).Wait();        }

而測試完大量新增後,就做了批次更新和刪除,不過遺憾的是,都失敗的,下面公開一個失敗的代碼,如果大家有解決方案,歡迎留言!

  public void Update(IEnumerable<TEntity> item)        {            var list = new List<WriteModel<TEntity>>();            foreach (var iitem in item)            {                var query = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));               list.Add(new UpdateOneModel<TEntity>(query, Builders<TEntity>.Update.Combine(GeneratorMongoUpdate(iitem))));            }            _table.BulkWriteAsync(list).Wait();               }        public void Delete(IEnumerable<TEntity> item)        {            var list = new List<WriteModel<TEntity>>();            foreach (var iitem in item)            {                var query = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));                list.Add(new DeleteOneModel<TEntity>(query));            }            _table.BulkWriteAsync(list).Wait();                  }

回到目錄

MongoDB學習筆記~批量插入方法的實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.