回到目录

关于官方驱动集成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之后的一些事的更多相关文章

  1. MongoDB学习笔记系列

    回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...

  2. MongoDB学习笔记系列~目录

    MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...

  3. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  4. MongoDB学习笔记二- Mongoose

    MongoDB学习笔记二 Mongoose Mongoose 简介 之前我们都是通过shell来完成对数据库的各种操作, 在开发中大部分时候我们都需要通过程序来完成对数据库的操作 而Mongoose就 ...

  5. mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

    最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...

  6. MongoDB学习笔记(转)

    MongoDB学习笔记(一) MongoDB介绍及安装MongoDB学习笔记(二) 通过samus驱动实现基本数据操作MongoDB学习笔记(三) 在MVC模式下通过Jqgrid表格操作MongoDB ...

  7. PHP操作MongoDB学习笔记

    <?php/*** PHP操作MongoDB学习笔记*///*************************//**   连接MongoDB数据库  **////*************** ...

  8. Solr学习笔记之2、集成IK中文分词器

    Solr学习笔记之2.集成IK中文分词器 一.下载IK中文分词器 IK中文分词器 此文IK版本:IK Analyer 2012-FF hotfix 1 完整分发包 二.在Solr中集成IK中文分词器 ...

  9. MongoDB 学习笔记(原创)

    MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...

随机推荐

  1. 一种C#生成符合Java规则的二进制文件方法

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.一个项目中的真实问题 实际项目中,本想通过C#制作小工具生成SHP ...

  2. 第三方侧滑菜单SlidingMenu在android studio中的使用

    南尘:每天进步一点点! 前面讲了官方的侧滑菜单DrawerLayout的使用,其实早在官方没有推出这个之前,就有很多第三方的jar包如SlidingMenu等,感谢开源的力量. SlidingMenu ...

  3. Handle类与线程

    首先声明Handle对象和该类的handleMessage方法: Handler BarHandler = new Handler(){ @Override public void handleMes ...

  4. 根据起止日期构建指定查询条件:第N周(yyyy-MM-dd/yyyy-MM-dd)

    项目中有个查询模块中用到查询条件: 年和周. 以往我直接指定是第几周,后来测试反映如果直接选择周的话并不知道所选周代表的年月日,而无法最快查询数据,后更改查询条件如下: 指定一个起始年月,根据起始年月 ...

  5. NPTL vs PThread

    NPTL vs PThread POSIX threads (pthread) is not an implementation, it is a API specification (a stand ...

  6. 2014/11/06 Oracle触发器初步 2014-11-06 09:03 49人阅读 评论(0) 收藏

    触发器我就不多解释了,保证数据的完整性的神器,嗯..也是减少程序员工作托管给数据库操作的好帮手.就不讲一些大道理了.通俗点,我们对数据库的操作,无非就是增 删 改 查. 触发器就是在删,改,增的时候( ...

  7. Nancy之给我们的网站添加自定义图标

    当我们在做一个网站时,可能经常会有这样一个需求,要给我们做的网站添加一个自定义的图标. 在Nancy中,默认是的下面这样 一个妹子的头像,其实也是挺好看的!! 那么当我们想要替换这个默认的,应该要怎么 ...

  8. Autofac - 装配

    从容器中的可用服务中, 选取一个构造函数来创造对象, 这个过程就是自动装配. 一.选择构造函数 默认情况下, autofac会使用无参构造函数, 去创建对象. 我将Person类稍微修改了下. pub ...

  9. 重温Bootstrap

    预热 ★ 学习要点 1. 理解其GridSystem(栅格排版): 2. 熟悉其所提供的各种CSS样式及显示效果: 3. 知道提供了哪些直接可用的UI组件,以及如何使用JavaScript去调整其交互 ...

  10. [示例] Firemonkey 不规则按钮实做

    利用 Firemonkey 控件的组合及可塑性,可以做出千变万化的效果及功能,下面展示一个不规则按钮的实做: 效果图: 实做方法: 开一个新工程 Multi-Device Application 放一 ...