RavenDb学习(六)查询补充特性
、延迟加载 原来的查询方式如下: IEnumerable<User> users = session .Query<User>() .Where(x => x.Name == "john"); 延迟加载方式: Lazy<IEnumerable<User>> lazyUsers = session .Query<User>() .Where(x => x.Name == "John") .Lazily(); IEnumerable<User> users = lazyUsers.Value; //一次执行所有延迟操作 IEnumerable<User> users = null; IEnumerable<City> cities = null; session .Query<User>() .Where(x => x.Name == "John") .Lazily(x => users = x); session .Query<City>() .Where(x => x.Name == "New York") .Lazily(x => cities = x); session.Advanced.Eagerly.ExecuteAllPendingLazyOperations(); //lucene的也支持 Lazy<IEnumerable<User>> users = session.Advanced .LuceneQuery<User>() .WhereEquals("Name", "John") .Lazily(); 、交集 在服务端进行交集操作,只返回符合全部条件的数据 session.Query<TShirt>("TShirtIndex") .Where(x => x.Manufacturer == "Raven") .Intersect() .Where(x => x.Types.Any(t => t.Color == "Blue" && t.Size == "Small")) .Intersect() .Where(x => x.Types.Any(t => t.Color == "Gray" && t.Size == "Large")) .ToList(); 或者这么写 session.Advanced.LuceneQuery<TShirt>("TShirtIndex") .Where("Manufacturer:Raven INTERSECT Color:Blue AND Size:Small INTERSECT Color:Gray AND Size:Large") .ToList(); 、禁止缓存和跟踪 session.Query<User>().Customize(x => x.NoCaching()); session.Query<User>().Customize(x => x.NoTracking()); 、动态聚合 假设我们有一条这样的sql语句 group by Product linq的写法是: var result = session.Query<Order>("Orders/All") .Where(x => x.Total > ) .AggregateBy(x => x.Product) .SumOn(x => x.Total) .ToList(); store的 store.DatabaseCommands.PutIndex("Orders/All", new IndexDefinitionBuilder<Order>() { Map = orders => from order in orders select new { order.Total, order.Product, order.Concurrency }, SortOptions = { { x => x.Product, SortOptions.Double } } }); 扩展查询: result = session.Query<Order>("Orders/All") .AggregateBy(x => x.Product) .AddRanges(x => x.Total < , x => x.Total >= && x.Total < , x => x.Total >= && x.Total < , x => x.Total >= ) .SumOn(x => x.Total) .ToList(); result = session.Query<Order>("Orders/All") .AggregateBy(x => x.Product) .SumOn(x => x.Total) .CountOn(x => x.Total) .AndAggregateOn(x => x.Concurrency) .MinOn(x => x.Total) .ToList(); result = session.Query<Order>("Orders/All") .AggregateBy(x => x.Product) .SumOn(x => x.Total) .CountOn(x => x.Total) .AndAggregateOn(x => x.Concurrency) .MinOn(x => x.Total) .ToList();
RavenDb学习(六)查询补充特性的更多相关文章
- 从零开始一起学习SLAM | C++新特性要不要学?
LAM,C++编程是必备技能.不过,大家在学校里学习的书本一般比较老,主要还是C++98那些老一套. 本文所谓的C++新特性是指C++11及其以后的C++14.C++17增加的新关键字和新语法特性.其 ...
- day 84 Vue学习六之axios、vuex、脚手架中组件传值
Vue学习六之axios.vuex.脚手架中组件传值 本节目录 一 axios的使用 二 vuex的使用 三 组件传值 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 axios的 ...
- Hbase深入学习(六) Java操作HBase
Hbase深入学习(六) ―― Java操作HBase 本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作. 先看以下读取一行记录hbase是如何进行工作 ...
- Java数据持久层框架 MyBatis之API学习六(Mapper XML 文件详解)
对于MyBatis的学习而言,最好去MyBatis的官方文档:http://www.mybatis.org/mybatis-3/zh/index.html 对于语言的学习而言,马上上手去编程,多多练习 ...
- (转)MyBatis框架的学习(六)——MyBatis整合Spring
http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...
- TweenMax动画库学习(六)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...
- MyBatis3系列__05查询补充&resultMap与resultType区别
1.查询补充 当你查询一条记录并且是简单查询时,情况相对简单,可以参考以下的例子: public Employee getEmpById(Integer id); 对应的xml文件中: <sel ...
- 可能是最早的学习Android N新特性的文章
可能是最早的学习Android N新特性的文章 Google在今天放出了Android N开发者预览版.Android N支持Nexus6及以上的设备.5太子Nexus5不再得到更新. Android ...
随机推荐
- sqlserver数据库18456错误怎么解决?
1.以windows验证模式进入数据库管理器. 2.右击sa,选择属性: 在常规选项卡中,重新填写密码和确认密码(改成个好记的).把强制实施密码策略去掉. 3.点击状态选项卡:勾选授予和启用.然后确定 ...
- 针对MSHFlexGrid的一系列通用方法-项目中实践代码分享
1.给MSHFlexGrid填充数据通用方法 '自定义报表填充程序 fgrid Public Function ShowformfData(Resultset As ADODB.Recordset, ...
- php分享二十四:数组
1:isset() 对于数组中为 NULL 的值不会返回 TRUE,而 array_key_exists() 会. 2:利用array_filter和strlen快速过滤数组中等于0的值 $path ...
- Oozie工作流属性配置的方式与策略
本文原文出处: http://blog.csdn.net/bluishglc/article/details/46049817 Oozie工作流属性配置的三种方式 Oozie有三种方法可以给工作流提供 ...
- Android 移动端数据结构
## SparseArray ## SparseBooleanArray ## SparseIntArray ## SparseLongArray * 位于android.util,Android 中 ...
- Android:percent 布局
Android 新引入的布局,百分比布局,Percent 布局 主要分为两种:PercentFrameLayout he PercentRelativeLayout 布局 通过 support 库引入 ...
- Pipeline 与 xargs
Pipeline 与 xargs Pipeline与命令行參数 应用程序接收输入的两种方式: 命令行參数 输入字符串被当成參数,通过int main(int argc, char **argv), 中 ...
- 两种屏幕HUD区域限制的做法(矩形,弧形)
HUD区域限制算是比较常用到的功能,方形的HUD区域限制多见于小地图,弧形或者椭圆多见于屏幕范围约束. 我没有研究倒角矩形做法,而是将椭圆和矩形进行插值得到一个弧度比较高的形状: 当插值为0时限制范围 ...
- 1. Apache Axis2 下载安装入门
Apache Axis2 /Java 学习手册 by 星云 0x01 什么是Apache Axis2/Java? Apache Axis2™ 是一个Web Service / SOAP / WSD ...
- 【Android】1.2 创建Android模拟器
分类:C#.Android.VS2015: 创建日期:2016-01-20 调试手机应用程序一般先用模拟器来实现,只是因为每次都发布到手机上调试太麻烦了.当应用程序在模拟器上调试没错后,再发布到手机 ...