菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
369
0

MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除

原创
05/13 14:22
阅读数 83600

回到目录

说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在项目中,还是实现了这种批量的操作,并且已经通过测试,下面公开一下源代码

        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)
            {
                QueryDocument queryDocument = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));
                list.Add(new UpdateOneModel<TEntity>(queryDocument, 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)
            {
                QueryDocument queryDocument = new QueryDocument("_id", new ObjectId(typeof(TEntity).GetProperty(EntityKey).GetValue(iitem).ToString()));
                list.Add(new DeleteOneModel<TEntity>(queryDocument));
            }
            _table.BulkWriteAsync(list).Wait();
        }

在程序实现之中,我们使用了WriteModel泛型对象,这将存储要插入,更新和删除的对象,对于插入来说,只有一个参数就是它的实体集合,而对象更新来说,它不仅有实体集合而且还有对应的条件QueryDocument,而对于删除操作来说,只提供QueryDocument即可!

回到目录

发表评论

0/200
369 点赞
0 评论
收藏