欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

c#操作mongodb插入數(shù)據(jù)效率

 更新時間:2019年01月22日 10:53:40   作者:chenqiangdage  
今天小編就為大家分享一篇關于c#操作mongodb插入數(shù)據(jù)效率,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

mongodb的數(shù)據(jù)插入速度是其一個亮點,同樣的10000條數(shù)據(jù),插入的速度要比Mysql和sqlserver都要快,當然這也是要看使用者怎么個使用法,你代碼如果10000次寫入使用10000次連接,那也是比不過其他數(shù)據(jù)庫使用事務一次性提交的速度的。

同樣,mongo也提供的一次性插入巨量數(shù)據(jù)的方法,因為mongodb沒有事務這回事,所以在在C#驅(qū)動里,具體方法是InsertManyAsync()一次性插入多個文檔。與之對應的是InsertOneAsync,這個是一次插入一個文檔;

InsertManyAsync()這個方法帶入的參數(shù)只要是實現(xiàn)了IEnumerable接口的類型就可以,所以可是list<>,這樣的數(shù)據(jù)類型;

同樣的10000次插入,兩個方法時間差別很大。如圖:

使用一次性插入多個文檔方法,插入10000條耗時僅1.3秒,分成10000次插入,耗時19.9秒。區(qū)別大了個去。同樣,前面我做過使用mysql插入10000條記錄,要用4秒多,可見,這mongodb插入速度不是吹 的。

具體的代碼如下,貼上:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
using MongoDB.Driver;
using System.Diagnostics;
namespace sqltomongo
{
  public  class MongoHelp
  {
    private static IMongoClient client
    {
      get
      {
        if (null == _client)
        {
          _client = new MongoClient("mongodb://127.0.0.1:27017");
        }
        return _client;
      }
    }
    public  static IMongoDatabase database
    {
      get {
         _database = client.GetDatabase("HotelPersonInfo");
         return _database;
      }
      set {
        _database = value;
      }
    }
    public  static IMongoCollection<BsonDocument> collection
    {
      get {
        return _collection;
      }
      set {
        _collection = value;
      }
    }
    protected static IMongoClient _client;
    protected static IMongoDatabase _database;
    protected static IMongoCollection<BsonDocument> _collection;
     //測試效率,兩個方法用時比較
    public async static void TestMongo()
    {
      //自定義的對象
      RoomInfo roomdata = new RoomInfo();
      List<BsonDocument> docunemts = new List<BsonDocument>();
      collection = database.GetCollection<BsonDocument>("HotelPersonInfo");
      Stopwatch sw = new Stopwatch();
      sw.Start();
      for (int i = 1; i < 10000; i++)
      {
         //mongo對用戶自定義的對象擴展了tobasonDocument這個方法,可直接用
        var roomdatadocument = new BsonDocument(roomdata.ToBsonDocument());
        docunemts.Add(roomdatadocument);
      }
      //一次10000條
       //這方法 查看api手冊,只要實現(xiàn)了IEnumerable借口的類型就都行
      await collection.InsertManyAsync(docunemts);
      sw.Stop();
       TimeSpan ts2 =sw.Elapsed;
       Console.WriteLine("total is " + ts2.TotalMilliseconds);
      ///一次次插 10000次
       Stopwatch sw2 = new Stopwatch();
       sw2.Start();
       for (int i = 1; i < 10000; i++)
       {
         var roomdatadocument = new BsonDocument(roomdata.ToBsonDocument());
         await collection.InsertOneAsync(roomdatadocument);
       }       
       sw2.Stop();
       TimeSpan ts22 = sw2.Elapsed;
       Console.WriteLine("total is " + ts22.TotalMilliseconds);
     // await collection.InsertOneAsync(roomdatadocument);
      //collection = database.GetCollection<BsonDocument>("HotelPersonInfo");
      // collection.InsertOneAsync(roomdatadocument);
    }
  }
}

里面使用了一個自定義的對象:

代碼如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MongoDB.Bson;
namespace sqltomongo
{
  public class RoomInfo 
  {
    public RoomInfo()
    {
     // id = "test"; 
      Name = "nafd"; Moblie = "123456"; EMail = "dd@qq.com"; Tel = "010123"; Fax = "0755-001";
      IdentityId = "616112323231"; RegisterType = "tid"; CardNo = "cardno"; Sex = "男"; Birthday = "1999";
      Address = "china beijing"; ZipCode = "519000"; RegisterDate = "2015-03-03";
      District2 = "District2";
      District3 = "District3";
      District4 = "District4";
    }
   // public string id { get; set; }
    /// <summary>
    /// 名字
    /// </summary>
    public string Name { get; set; }      
     /// <summary>
    /// 手機號碼
    /// </summary>
    public string Moblie { get; set; }
    /// <summary>
    /// 郵箱
    /// </summary>
    public string EMail {get;set;}
    /// <summary>
    /// 座機
    /// </summary>
    public string Tel { get; set; }
    /// <summary>
    /// 傳真
    /// </summary>
    public string Fax { get; set; }
    /// <summary>
    /// 身份證
    /// </summary>
    public string IdentityId { get; set; }
     /// <summary>
    /// 使用什么注冊的
    /// ID --身份證 (只需要id身份證的信息)
    /// </summary>
    public string RegisterType { get; set; }
      /// <summary>
    /// 會員卡號
    /// </summary>
    public string CardNo { get; set; }
    /// <summary>
    /// 性別
    /// </summary>
    public string Sex { get; set; }
    /// <summary>
    /// 生日
    /// </summary>
    public string Birthday { get; set; }
    /// <summary>
    /// 地址
    /// </summary>
    public string Address { get; set; }
    /// <summary>
    /// 郵編
    /// </summary>
    public string ZipCode { get; set; }
    public string District2 { get; set; }
    public string District3 { get; set; }
    public string District4 { get; set; }
    /// <summary>
    /// 注冊時間 
    /// </summary>
    public string RegisterDate { get; set; }
  }
}

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內(nèi)容請查看下面相關鏈接

相關文章

  • mac下安裝和配置mongodb的步驟詳解

    mac下安裝和配置mongodb的步驟詳解

    大家都知道MongoDB是一個跨平臺的,面向文檔的數(shù)據(jù)庫,提供高性能,高可用性和可擴展性方便。那么下面這篇文章就來給大家介紹了關于在mac系統(tǒng)下安裝和配置mongodb的方法步驟,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-07-07
  • mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決

    mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決

    這篇文章主要介紹了mongodb root用戶創(chuàng)建數(shù)據(jù)庫提示not master的解決方案,具有很好的參考價值,希望對大家有所幫助。
    2023-02-02
  • 一次因mongo查詢不存在字段引發(fā)的事故記錄

    一次因mongo查詢不存在字段引發(fā)的事故記錄

    這篇文章主要給大家介紹了關于一次因mongo查詢不存在字段引發(fā)的事故記錄,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • MongoDB索引類型匯總分享

    MongoDB索引類型匯總分享

    這篇文章主要介紹了MongoDB索引類型匯總,單字段索引、復合索引、多鍵索引、文本索引、2dsphere索引等多種索引類型,需要的朋友可以參考一下
    2022-04-04
  • 關于MongoDB數(shù)據(jù)庫學習路線指南

    關于MongoDB數(shù)據(jù)庫學習路線指南

    這篇文章主要介紹了關于MongoDB數(shù)據(jù)庫學習路線指南,給大家以學習路線地圖的形式講解該怎么學習MongoDB數(shù)據(jù)庫,需要的朋友可以參考下
    2023-04-04
  • MongoDB備份和還原的操作指南

    MongoDB備份和還原的操作指南

    MongoDB備份和還原是指將MongoDB數(shù)據(jù)庫中的數(shù)據(jù)和集合備份到另一個存儲位置,并在需要的時候恢復這些備份的過程,備份和還原MongoDB數(shù)據(jù)庫非常重要,本文給大家介紹了MongoDB備份和還原的操作指南,需要的朋友可以參考下
    2024-05-05
  • MongoDB為什么比Mysql快原理解析

    MongoDB為什么比Mysql快原理解析

    這篇文章主要為大家介紹了MongoDB為什么比Mysql快原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 解決net start MongoDB 報錯之服務名無效的問題

    解決net start MongoDB 報錯之服務名無效的問題

    這篇文章主要介紹了解決net start MongoDB 報錯之服務名無效的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Windows下MongoDB的下載安裝、環(huán)境配置教程圖解

    Windows下MongoDB的下載安裝、環(huán)境配置教程圖解

    這篇文章主要介紹了Windows下MongoDB的下載安裝、環(huán)境配置教程詳解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-06-06
  • MongoDB安裝及接入springboot的詳細過程

    MongoDB安裝及接入springboot的詳細過程

    MongoDB是一個開源、高性能、無模式(模式自由)的文檔(Bson)型數(shù)據(jù)庫,這篇文章主要介紹了MongoDB安裝及接入springboot,需要的朋友可以參考下
    2024-05-05

最新評論