博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB学习笔记~批量插入方法的实现
阅读量:5754 次
发布时间:2019-06-18

本文共 1569 字,大约阅读时间需要 5 分钟。

批量插入在EF时代大叔就自己封装过,原理是将多次SQL连接和多次向SQL发送的指令减少到1次,或者1000条数据1次,而对于EF产生的语句来说,这无疑是性能高效的,因为EF这边在处理时,每个语句都会向SQL发送一次,当然就算它是在一个SQL连接里,向SQL发送N多条指令,也是性能低下的。

对于MongoDB来说也是一样,如何减少与Mongo通信的次数,是提高插入操作的前提,还好,官方驱动为我们继承了这个功能,使用WriteModel类型来存储要插入的集合,使用InsertOneModel类型来承载要插入的对象,这一切都很直观,代码也很清晰!

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

而测试完批量添加后,就做了批量更新和删除,不过遗憾的是,都失败的,下面公开一个失败的代码,如果大家有解决方案,欢迎留言!

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

本文转自博客园张占岭(仓储大叔)的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
SPSS Modeler K-Means聚类结果评价
查看>>
easyui left-tabs 左侧的tabs
查看>>
图论中DFS与BFS的区别、用法、详解?
查看>>
Color.js增强你对颜色的控制
查看>>
x == (x = y) 不等于 (x = y) == x ?
查看>>
制作一个 JavaScript 小游戏
查看>>
GEC要上线了!
查看>>
HTML+CSS实现div的高度自适应填满剩余空间的7种方法
查看>>
关于svn遇到的问题
查看>>
Running CoreOS on Vagrant
查看>>
程序员的工作方法--接到一份工作后应该怎么做。
查看>>
安全的结束一个线程
查看>>
Android NDK Socket(POSIX Socket Api)编程
查看>>
cordova build ios error
查看>>
windows环境python idle修改注册表
查看>>
ubuntu14.04 openframeworks
查看>>
iptables
查看>>
消息中间件对比
查看>>
Python自学笔记之高级特性——生成器
查看>>
android通过shape.xml制作渐变背景
查看>>