博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# mongodb 简单自增排序 以及批量去重批量入库
阅读量:4701 次
发布时间:2019-06-09

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

//取自动排序大小

private Int64 SeqInt(int size){var jobs = db.GetCollection
("Counters");var query = Query.And(Query.EQ("_id", "TaoBaoItem"));var sortBy = SortBy.Descending("next");var update = Update.Inc("next", (Int64)size);//.Push("new", true).Push("upsert", true);var result = jobs.FindAndModify(query, sortBy, update, true, true);BsonDocument chosenJob = result.ModifiedDocument;return chosenJob.GetValue("next").AsInt64;}

 

 

 

/// /// 批量查找存在的数据/// /// /// 
private MongoCursor
QueryItems(List
cacheitems){Stopwatch sw = new Stopwatch();sw.Start();BsonArray dd;dd = new BsonArray();//批量插询foreach (var item in cacheitems){dd.Add(item.Iid);}var query = Query.In("Iid", dd);IMongoQuery q = query;// var count = taoBaoItemRepo.Collection.Count(q);var sort = new SortByDocument { { "_id", -1 } };var x = taoBaoItemRepo.Collection.Find(q).SetSortOrder(sort);sw.Stop();WorkMsg("自写查询{0}条耗时:{1}\r\n".FormatWith(cacheitems.Count, sw.ElapsedMilliseconds));return x;}

 

 

业务部份

 

///         /// 去重入库线程        ///         public void Work()        {            while (true)            {                List
cacheitems = ItemCache.GetLItem(); if (cacheitems != null) { Stopwatch sw = new Stopwatch(); sw.Start(); MongoCursor
rz = QueryItems(cacheitems); foreach (TaoBaoItem doc in rz) { HashCache.Add(doc.Iid); } int i = 0; foreach (var item in cacheitems) { i++; if (HashCache.Add(item.Iid)) { Items.Add(item); //temp计数 并作大于100的判断 if (Items.Count >= 100 || (i == cacheitems.Count && ItemCache.Count() == 0)) { var seqid = SeqInt(Items.Count) ; seqid = seqid - Items.Count; foreach (var x in Items) { x.DocId = seqid; seqid++; } Stopwatch sw1 = new Stopwatch(); sw1.Start(); taoBaoItemRepo.Add(Items); sw1.Stop(); WorkMsg("插入{0}条宝贝耗时:{1}\t库内共有宝贝{2}\t".FormatWith(Items.Count, sw1.ElapsedMilliseconds, taoBaoItemRepo.Count())); Items.Clear(); } } } sw.Stop(); WorkMsg("{0}条记录处理[去重+入库]总耗时:{1}\r\n".FormatWith(cacheitems.Count, sw.ElapsedMilliseconds)); } else { Thread.Sleep(5000); } } }

 

转载于:https://www.cnblogs.com/jizhongfong/p/3295161.html

你可能感兴趣的文章
gulpfile 压缩模板
查看>>
【34.14%】【BZOJ 3110】 [Zjoi2013]K大数查询
查看>>
【 henuacm2016级暑期训练-动态规划专题 A 】Cards
查看>>
第五篇:白话tornado源码之褪去模板的外衣
查看>>
设备常用框架framework
查看>>
bootstrap模态框和select2合用时input无法获取焦点(转)
查看>>
MockObject
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
C# 两个datatable中的数据快速比较返回交集或差集
查看>>
关于oracle样例数据库emp、dept、salgrade的mysql脚本复杂查询分析
查看>>
adb shell am 的用法
查看>>
iOS10 UI教程视图和子视图的可见性
查看>>
FindChildControl与FindComponent
查看>>
中国城市json
查看>>
android下载手动下载Android SDK
查看>>
C++学习:任意合法状态下汉诺塔的移动(原创)
查看>>
leetcode133 - Clone Graph - medium
查看>>
一点小基础
查看>>