• MongoDB学习笔记~批量插入方法的实现


    回到目录

    批量插入在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();
              
            }

    回到目录

  • 相关阅读:
    STM32F407 开发环境搭建 程序下载 个人笔记
    用bootstrap_table实现html 表格翻页
    STM32F407 正点原子 资料网址记录
    C51 动态数码管 个人笔记
    C51 继电器 个人笔记
    谷歌浏览器截长图
    C51 原创电子琴 (蜂鸣器/计时器/中断/矩阵按键)
    从零自学Hadoop(01):认识Hadoop
    Centos修改DNS重启或者重启network服务后丢失问题处理
    初次体验VS2015正式版,安装详细过程。
  • 原文地址:https://www.cnblogs.com/lori/p/4539495.html
Copyright © 2020-2023  润新知