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 ...
随机推荐
- Cesium原理篇:3最长的一帧之地形(2:高度图)
这一篇,接着上一篇,内容集中在高度图方式构建地球网格的细节方面. 此时,Globe对每一个切片(GlobeSurfaceTile)创建对应的TileTerrain类,用来维 ...
- 【JUC】JDK1.8源码分析之CountDownLatch(五)
一.前言 分析完了CyclicBarrier后,下面分析CountDownLatch,CountDownLatch用于同步一个或多个任务,强制他们等待由其他任务执行的一组操作完成.CountDownL ...
- SIFT特征详解
1.SIFT概述 SIFT的全称是Scale Invariant Feature Transform,尺度不变特征变换,由加拿大教授David G.Lowe提出的.SIFT特征对旋转.尺度缩放.亮度变 ...
- HTTP请求方法详解
HTTP请求方法详解 请求方法:指定了客户端想对指定的资源/服务器作何种操作 下面我们介绍HTTP/1.1中可用的请求方法: [GET:获取资源] GET方法用来请求已被URI识别的资源.指定 ...
- 注册表(C#)
Windowa注册表是包含Windows安装,用户喜好以及以安装软件和设备的所有配置信息的核心储存库.COM组件必须把它的信息出存在注册表中,才能被客户程序使用.注册表也包含了一些系统配置的信息,这些 ...
- 工厂模式,根据ID创建对应的实例类
工厂模式,根据ID创建对应的实例类 // // main.cpp // TestCPP1 // // Created by bianchx on 15/4/27. // Copyright (c) 2 ...
- [无聊的事-连载之连开100个VS] 折腾你的骚机吧,骚年们!!!
[无聊的事-连载之连开100个VS] 折腾你的骚机吧,骚年们!!! 只有8G内存的,用这个:打开你的CMD命令提示符如果只装了Visual Studio 2010,用这条命令,打开50个VSfor / ...
- VS 常用快捷键
区域代码选择:按Shift选择整(行)块代码,可配合四个方向键(左右键:选择单个字符,上下键:上下行的当前列).Home(当前行首).End(当前行尾).PgUp(当前页首)和PgDn(当前页尾)使用 ...
- nginx concat模块配置 页面返回400 bad request
在1.4.x版本的nginx没有发现这个问题,但是在1.5.x版本就遇到了这个问题 由于Nginx在新版本中,使用了标准的 MIME-Type:application/javascript.而在ngi ...
- 更新整理本人所有博文中提供的代码与工具(C++,2013.11)
为了更方便地管理博文中涉及的各种代码与工具资源,现在把这些资源迁移到 Google Code 中,有兴趣者可前往下载. C++ 1.<通用高性能 Windows Socket 组件 HP-Soc ...