博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)
阅读量:6691 次
发布时间:2019-06-25

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

我不得不说,mongodb官方驱动在与.net结合上做的不是很好,不是很理想,所以,我决定对它进行了二次封装,这是显得很必然了,每个人都希望使用简单的对象,而对使用复杂,麻烦,容易出错的对象尽而远之,这是正常的,人都是喜欢懒惰的,就像程序员,也是一样,喜欢偷懒,可能说,偷懒是程序员进步的一个标志,呵呵.

下面我是总结的几种标准的操作,主要是针对我封装的官方驱动而方的(MongoOfficialRepository<TEntity>)

1  插入对象和子对象

///         /// 添加对象        ///         static public void Insert()        {            List
list = new List
(); for (int i = 0; i < 10; i++) { //添加新对象 list.Add(new Person { Address = new Address { City = "北京", District = "鸾翔凤集", Province = "luanxian", }, AddList = new List
{ new Address { Seconds=1, City = "湖北", District = "鸾翔凤集", Province = "luanxian", }, new Address { Seconds=1, City = "湖南", District = "小区", Province = "luanxian", } }, Age = 35, Birthday = DateTime.Now, LastContact = DateTime.Now, Name = "wangwu" }); } repository1.Insert(list); }

2 更新对象和子对象集合元素,这是非常不错的功能,对于没有必要更新的记录,可以不去为它赋值

///         /// 集合查询        ///         static public void Update()        {            repository1.Update
(i => new Person { Id = "556bfd1b2683c82060c2edd0", AddList = new List
{ new Address { Id = "556bfd1b2683c82060c2edd3", City = "占占大师123", District = "鸾翔凤集", Seconds=2 } } }); }

3 分页,多字段查询和排序,这是项目开发中用的最多的东西了,写了个标准的给大家参考

///         /// 分页,排序,查询        ///         static public void Select()        {            //排序和检索            var m1 = repository1.GetModel(new            {                Address = new                {                    City = "北京"                },                AddList = new                {                    Seconds = 1                }            }, new { Name = OrderType.Desc }, 1, 20);

4 分组,对于需要按着按些字段进行聚合(统计,求和,总数,最大值,最小值等),及多条件查询,这里有不错的实例

///         /// 分组        ///         static public PagedList
Group(string keyword, int? age, int page) { Specification
spec = new TrueSpecification
(); //过滤 if (!string.IsNullOrWhiteSpace(keyword)) { spec &= new DirectSpecification
(i => i.Name == keyword); } if (age.HasValue) { spec &= new DirectSpecification
(i => i.Age == age); } //分组 var linq = from data1 in repository1.GetModel().Where(spec.SatisfiedBy()) group data1 by new { data1.Id, data1.Name } into g select new Person { Id = g.Key.Id, Name = g.Key.Name, Total = new Total { Count = g.Count(), Max = g.Max(i => i.Age), } }; return new PagedList
(linq, page, 10); }

OK,以上是针对我的MongoDB仓储进行的一些二次说明,感觉还是比较有必要的,呵呵.

 

转载地址:http://kfhao.baihongyu.com/

你可能感兴趣的文章
Rust编程语言的核心部件
查看>>
BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】
查看>>
v8世界探险(3) - v8的抽象语法树结构
查看>>
《C语言及程序设计》实践项目——用if语句实现分支结构
查看>>
“AI +跨界+技术” 看2018中国会展创新者大会的新观点
查看>>
JavaScript——数据类型转换(显式和隐式)
查看>>
【半月刊 4】前端高频面试题及答案汇总
查看>>
lc686. Repeated String Match
查看>>
RHEL 7.1操作系统安装过程说明
查看>>
基于Python的性能自动化测试框架设计思路和实现
查看>>
dubbo-rpc基本功能
查看>>
CefSharp获取网页源码时卡住长时间没有返回结果
查看>>
刚入门Python的小伙伴,这是腾讯大牛工作中总结的爬虫经验!
查看>>
智能微型机器人可随周围环境“变身”
查看>>
Linux操作系统 MBR扇区故障了怎么办
查看>>
Java网络编程基础(一)
查看>>
在Mac版本下的IDEA中设置代码注释模版
查看>>
我的友情链接
查看>>
Ruby实现二分法查找
查看>>
OA系统报错
查看>>