MongoDB学习笔记~关于官方驱动集成IQueryable之后的一些事
关于官方驱动集成IQueryable之后的一些事,有好事也有坏事,好事就是它会将你的linq语句非常友好的翻译成MongoDB语句,而坏事就是有一些linq语句不会被翻译,不会被翻译的代价就是将整个结果集装到内存,然后进行linq to object的查询,效率自然是非常低的,呵呵。
好事
最新官方驱动中,添加了对IQueryable扩展方法的支持
public static IMongoQueryable<TDocument> AsQueryable<TDocument>(this IMongoCollection<TDocument> collection);
1 它对Where完成支持
_webManageUsersRepository.GetModel().Where(i => i.LoginName == "zzl");
2 它对group完全支持
var g = _webManageUsersRepository.GetModel()
.GroupBy(i => i.DepartmentID, (i, v) => new
{
dept = i,
userCount = v.Count()
});
通过断点我们可以看到它所生成的mongodb语句,然后可以把语句放在命令行中去执行看看具体效果
db.WebManageUsers.aggregate([{ "$group" : { "_id" : "$DepartmentID", "userCount" : { "$sum" : } } }])
上面写法是我比较喜欢的lambda表达式的方法,语法简介,漂亮,而我不太喜欢linq写法,但是,如果是多字段的分组,你就必须使用linq标准写法了,因为到目前为止,mongo官方驱动还不支持多字段分组的lambda写法,如下面的代码,分组结果就是错误的
var bb = _webManageUsersRepository.GetModel()
.GroupBy(
i => new
{
i.DepartmentID,
i.Status
},
(i, v) => new
{
dept = i.DepartmentID,
status = i.Status,
userCount = v.Count()
});
它不能正确的翻译成Mongo表达式
{aggregate([{ "$group" : { "dept" : "$DepartmentID", "status" : "$Status", "userCount" : { "$sum" : }, "_id" : } }])}
而使用传统的linq写法就可以被mongo驱动很好的翻译
var gg = from a in _webManageUsersRepository.GetModel()
group a by new
{
dept = a.DepartmentID,
status = a.Status
} into g
select new RoleCount
{
dept = g.Key.dept,
status = g.Key.status,
userCount = g.Count()
};
下面生成的代码是正确的
aggregate([{ "$group" : { "_id" : { "dept" : "$DepartmentID", "status" : "$Status" }, "__agg0" : { "$sum" : } } }, { "$project" : { "dept" : "$_id.dept", "status" : "$_id.status", "userCount" : "$__agg0", "_id" : } }])}
可以在mongo客户端上看到正确的结果
aaarticlea/png;base64,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" alt="" />
坏事
对count()方法完成不支持,不推荐使用,如果要用到count(),建议使用mongo原生态的,而不是linq的
Stopwatch sw1 = new Stopwatch();
sw1.Restart();
var a1 = _webManageUsersRepository.Count(i => true);//性能好
sw1.Stop();
var at1 = sw1.ElapsedMilliseconds; Stopwatch sw = new Stopwatch();
sw.Restart();
var a = _webManageUsersRepository.GetModel().Count();//性能差
sw.Stop();
var at = sw.ElapsedMilliseconds;
MongoDB学习笔记~关于官方驱动集成IQueryable之后的一些事的更多相关文章
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- MongoDB学习笔记二- Mongoose
MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习笔记(转)
MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...
- PHP操作MongoDB学习笔记
<?php/*** PHP操作MongoDB学习笔记*///*************************//** 连接MongoDB数据库 **////*************** ...
- Solr学习笔记之2、集成IK中文分词器
Solr学习笔记之2.集成IK中文分词器 一.下载IK中文分词器 IK中文分词器 此文IK版本:IK Analyer 2012-FF hotfix 1 完整分发包 二.在Solr中集成IK中文分词器 ...
- MongoDB 学习笔记(原创)
MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...
随机推荐
- Java类初始化
Java类初始化 成员变量的初始化和构造器 如果类的成员变量在定义时没有进行显示的初始化赋值,Java会给每个成员变量一个默认值 对于 char.short.byte.int.long.float. ...
- 【JUC】JDK1.8源码分析之LinkedBlockingQueue(四)
一.前言 分析完了ArrayBlockingQueue后,接着分析LinkedBlockingQueue,与ArrayBlockingQueue不相同,LinkedBlockingQueue底层采用的 ...
- jQuery-1.9.1源码分析系列(十二) 筛选操作
在前面分析的时候也分析了部分筛选操作(详见),我们接着分析,把主要的几个分析一下. jQuery.fn.find( selector ) find接受一个参数表达式selector:选择器(字符串). ...
- Moon.Orm与其他Orm的技术对比
有时候在思考大家为什么喜欢EF,为什么又出现这么多的Orm,为什么Nhiberate被人许多人接收又被许多人拒绝 最后发现结论:萝卜白菜各有所爱.适合自己的就是最好的. EF 微软团队支持(可谓强大的 ...
- 用CSS3动画特效实现弹窗效果
提示:如果大家觉得本篇实现的弹窗效果有用,可持续关注.接下会添加更多效果并且封装成插件,这样使用就方便了.效果查看: https://heavis.github.io/hidialog/index.h ...
- Python_Day_05 计数器(counter),有序字典(OrderDict),默认字典(defaultdict),可命名元祖(namedtuple),双向队列(deque),单项队列(deuqe.Queue)
Counter(计数器) 是一个字典的子类,存储形式同样为字典,其中存储的键为字典的元素,值为元素出现的次数,在使用之前我们需要先导入文件 import collections 初始化一个计数器 im ...
- JavaScript的作用域和块级作用域概念理解
作用域 作用域永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期.说到这里我们需要理解两个概念:块级作用域与函数作用域. 函数作用域 这个应该好理解,函数作用域就是说定义在 ...
- WPF阴影效果(DropShadowEffect)
<TextBlock Text="阴影效果" FontSize="32"> <TextBlock.Effect> <DropSha ...
- Win10 UWP系列:更新UWP时注意的问题——TargetDeviceFamily
前几天把CurrencyExchanger提交到微软参加Master认证,结果没有通过,反馈了一些错误,看来微软检查还是比较仔细的. 错误主要有: Visual feedback helps user ...
- .Net(c#)加密解密之Aes和Des
.Net(c#)加密解密工具类: /// <summary> /// .Net加密解密帮助类 /// </summary> public class NetCryptoHelp ...