MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)
我不得不说,mongodb官方驱动在与.net结合上做的不是很好,不是很理想,所以,我决定对它进行了二次封装,这是显得很必然了,每个人都希望使用简单的对象,而对使用复杂,麻烦,容易出错的对象尽而远之,这是正常的,人都是喜欢懒惰的,就像程序员,也是一样,喜欢偷懒,可能说,偷懒是程序员进步的一个标志,呵呵.
下面我是总结的几种标准的操作,主要是针对我封装的官方驱动而方的(MongoOfficialRepository<TEntity>)
1 插入对象和子对象
/// <summary>
/// 添加对象
/// </summary>
static public void Insert()
{
List<Person> list = new List<Person>();
for (int i = ; i < ; i++)
{
//添加新对象 list.Add(new Person
{
Address = new Address
{
City = "北京",
District = "鸾翔凤集",
Province = "luanxian",
},
AddList = new List<Address>
{
new Address
{
Seconds=,
City = "湖北",
District = "鸾翔凤集",
Province = "luanxian",
},
new Address
{
Seconds=,
City = "湖南",
District = "小区",
Province = "luanxian",
}
},
Age = ,
Birthday = DateTime.Now,
LastContact = DateTime.Now,
Name = "wangwu"
});
}
repository1.Insert(list);
}
2 更新对象和子对象集合元素,这是非常不错的功能,对于没有必要更新的记录,可以不去为它赋值
/// <summary>
/// 集合查询
/// </summary>
static public void Update()
{
repository1.Update<Person>(i => new Person
{
Id = "556bfd1b2683c82060c2edd0",
AddList = new List<Address>
{
new Address
{
Id = "556bfd1b2683c82060c2edd3",
City = "占占大师123",
District = "鸾翔凤集",
Seconds=
}
}
});
}
3 分页,多字段查询和排序,这是项目开发中用的最多的东西了,写了个标准的给大家参考
/// <summary>
/// 分页,排序,查询
/// </summary>
static public void Select()
{
//排序和检索
var m1 = repository1.GetModel(new
{
Address = new
{
City = "北京"
},
AddList = new
{
Seconds =
}
}, new { Name = OrderType.Desc }, , );
4 分组,对于需要按着按些字段进行聚合(统计,求和,总数,最大值,最小值等),及多条件查询,这里有不错的实例
/// <summary>
/// 分组
/// </summary>
static public PagedList<Person> Group(string keyword, int? age, int page)
{
Specification<Person> spec = new TrueSpecification<Person>(); //过滤
if (!string.IsNullOrWhiteSpace(keyword))
{
spec &= new DirectSpecification<Person>(i => i.Name == keyword);
} if (age.HasValue)
{
spec &= new DirectSpecification<Person>(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<Person>(linq, page, );
}
OK,以上是针对我的MongoDB仓储进行的一些二次说明,感觉还是比较有必要的,呵呵.
MongoDB学习笔记~自己封装的Curd操作(查询集合对象属性,更新集合对象)的更多相关文章
- MongoDB学习笔记~自己封装的Curd操作(按需更新的先决条件)
回到目录 我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋 ...
- MongoDB学习(1)--安装,基本curd操作
知识点: 1-MongoDB 安装,启动和卸载 2-基本概念 3-基本的增删改查操作(CURD) 来回顾总结一把学习的mongodb,如果有javascript基础,学习"芒果DB" ...
- MongoDB学习笔记—03 增删改查操作
MongoDB的CURD操作分别通过函数insert().update().find().remove()进行 MongoDB文档新增与删除 MongoDB中关于文档的新增与删除比较简单.主要通过in ...
- MongoDB 学习笔记(四)C# 操作MongoDB
C#驱动对mongodb的操作,目前驱动有两种:官方驱动和samus驱动,不过我个人还是喜欢后者, 因为提供了丰富的linq操作,相当方便. 官方驱动:https://github.com/mongo ...
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
- MongoDB学习笔记(2):数据库操作及CURD初步
MongoDB学习笔记(2):数据库操作及CURD 数据库操作 创建数据库 首先MongoDB中数据库的创建和数据库的切换都是使用命令,USE DATABASE,如果要切换的数据库不存在则会进行创建, ...
- MongoDB学习笔记:Python 操作MongoDB
MongoDB学习笔记:Python 操作MongoDB Pymongo 安装 安装pymongopip install pymongoPyMongo是驱动程序,使python程序能够使用Mong ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
随机推荐
- 在Linux下的中断方式读取按键驱动程序
// 在Linux下的中断方式读取按键驱动程序 //包含外部中断 休眠 加入poll机制 // 采用异步通知的方式 // 驱动程序发 ---> app接收 (通过kill_fasync()发送) ...
- Hive启动报错: Found class jline.Terminal, but interface was expected
报错: [ERROR] Terminal initialization failed; falling back to unsupported java.lang.IncompatibleClassC ...
- 符合我公司GIS开源解决方案的探讨
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.前言 这一周,我对GIS开源解决方案中涉及到的开源软件以及相关技术 ...
- 四大组件之ContentProvider
前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...
- TF-IDF提取行业关键词
1. TF-IDF简介 TF-IDF(Term Frequency/Inverse Document Frequency)是信息检索领域非常重要的搜索词重要性度量:用以衡量一个关键词\(w\)对于查询 ...
- How PhoneGap & Titanium Works
转载自 http://www.appcelerator.com/blog/2012/05/comparing-titanium-and-phonegap/ How PhoneGap Works As ...
- javascript设计模式实践之迭代器--具有百叶窗切换图片效果的JQuery插件(一)
类似于幻灯片的切换效果,有时需要在网页中完成一些图片的自动切换效果,比如广告,宣传,产品介绍之类的,那么单纯的切就没意思了,需要在切换的时候通过一些效果使得切换生动些. 比较常用之一的就是窗帘切换了. ...
- [Bug]2016-02
1.0 反序列化时的对象属性类型定义错误. 字符串类型用整型接收.(导致一直反序列化失败.) 2.0 HttpWebRequest myReq = (HttpWebRequest)HttpWebReq ...
- Visual Studio.NET单选题
在Visual Studio.NET窗口中,在__________窗口中可以察看当前项目的类和类型的层次信息. A. 解决方案资源管理器 B. 类视图 C. 资源视图 D. 属性 在线答题:http ...
- iOS开发之CocoaPods的安装与使用
前言部分 iOS开发时,项目中会引用许多第三方库,CocoaPods(https://github.com/CocoaPods/CocoaPods) 可以用来方便的统一管理这些第三方库. 一.安装 由 ...