RavenDb学习(七) 异步工作以及维度查询
、异步执行
var entity = new Company {Name = "Async Company #2", Id = "companies/2"};
using (var session = documentStore.OpenAsyncSession())
{
); // loading an entity asynchronously
await session.StoreAsync(entity); // in-memory operations are committed asynchronously when calling SaveChangesAsync
await session.SaveChangesAsync(); // returns a task that completes asynchronously
var query = session.Query<Company>()
.Where(x => x.Name == "Async Company #1")
.ToListAsync(); // returns a task that will execute the query
}
、维度查询
假设我们有一个这样的文档:
{
DateOfListing: "2000-09-01T00:00:00.0000000+01:00"
Manufacturer: "Jessops"
Model: "blah"
Cost: 717.502206059872
Zoom:
Megapixels: 10.4508949012733
ImageStabiliser: false
}
)建立基于制造厂商,成本和像素的维度
var _facets = new List<Facet>
{
new Facet
{
Name = "Manufacturer"
},
new Facet
{
Name = "Cost_Range",
Mode = FacetMode.Ranges,
Ranges =
{
"[NULL TO Dx200.0]",
"[Dx200.0 TO Dx400.0]",
"[Dx400.0 TO Dx600.0]",
"[Dx600.0 TO Dx800.0]",
"[Dx800.0 TO NULL]",
}
},
new Facet
{
Name = "Megapixels_Range",
Mode = FacetMode.Ranges,
Ranges =
{
"[NULL TO Dx3.0]",
"[Dx3.0 TO Dx7.0]",
"[Dx7.0 TO Dx10.0]",
"[Dx10.0 TO NULL]",
}
}
};
成本字段范围
Cost <= 200.0
200.0 <= Cost <= 400.0
400.0 <= Cost <= 600.0
600.0 <= Cost <= 800.0
Cost >= 800.0
像素字段范围
Megapixels <= 3.0
3.0 <= Megapixels <= 7.0
7.0 <= Megapixels <= 10.0
Megapixels >= 10.0
//保存
session.Store(new FacetSetup { Id = "facets/CameraFacets", Facets = _facets });
、创建索引
store.DatabaseCommands.PutIndex("CameraCost",
new IndexDefinition
{
Map = @"from camera in docs
select new
{
camera.Manufacturer,
camera.Model,
camera.Cost,
camera.DateOfListing,
camera.Megapixels
}"
});
、查询
var facetResults = session.Query<Camera>("CameraCost")
.Where(x => x.Cost >= && x.Cost <= )
.ToFacets("facets/CameraFacets");
通过通过这个网址查询:
http://localhost:8080/facets/CameraCost?facetDoc=facets/CameraFacets&query=Cost_Range:[Dx100 TO Dx300.0]
结果如下:
{
Manufacturer: [
{
Range: 'canon',
Count:
},
{
Range: 'jessops',
Count:
},
{
Range: 'nikon',
Count:
},
{
Range: 'phillips',
Count:
},
{
Range: 'sony',
Count:
}
],
Cost_Range: [
{
Range: '[NULL TO Dx200.0]',
Count:
},
{
Range: '[Dx200.0 TO Dx400.0]',
Count:
}
],
Megapixels_Range: [
{
Range: '[NULL TO Dx3.0]',
Count:
},
{
Range: '[Dx3.0 TO Dx7.0]',
Count:
},
{
Range: '[Dx7.0 TO Dx10.0]',
Count:
},
{
Range: '[Dx10.0 TO NULL]',
Count:
}
]
}
RavenDb学习(七) 异步工作以及维度查询的更多相关文章
- (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码
http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...
- IBatis.Net学习笔记六--再谈查询
在IBatis.Net学习笔记五--常用的查询方式 中我提到了一些IBatis.Net中的查询,特别是配置文件的写法. 后来通过大家的讨论,特别是Anders Cui 的提醒,又发现了其他的多表查询的 ...
- MySQL订单分库分表多维度查询
转自:http://blog.itpub.net/29254281/viewspace-2086198/ MySQL订单分库分表多维度查询 MySQL分库分表,一般只能按照一个维度进行查询. 以订单 ...
- SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题
目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...
- MyBatis学习七:spring和MyBatis整合
<\mybatis\day02\16mybatis和spring整合-sqlSessionFactory配置.avi;> MyBatis学习七:spring和MyBatis整合.逆向工程 ...
- SVG 学习<七> SVG的路径——path(1)直线命令、弧线命令
目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...
- day 85 Vue学习七之vue-cookie
Vue学习七之vue-cookie 通过vue如何操作cookie呢 参考链接:https://www.jianshu.com/p/535b53989b39 第一步:安装vue-cookies ...
- oracle学习 第一章 简单的查询语句 ——03
1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...
- 数据库学习笔记3 基本的查询流 2 select lastname+','+firstname as fullname order by lastname+','+firstname len() left() stuff() percent , select top(3) with ties
数据库学习笔记3 基本的查询流 2 order by子句对查询结果集进行排序 多列和拼接 多列的方式就很简单了 select firstname,lastname from person.pers ...
随机推荐
- tomcat启动报错 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
项目运行一直很平稳,但是换了tomcat之后打开jsp网页时就报错,描述如下: 1. 错误描述 打开jsp网页时报错 java.lang.NullPointerException org.ap ...
- android数据存取的四种方式
Android系统下有四种数据的存在形式,分别是SQLite,SharePreference,File,ContentProvider.一:特性介绍:SQLite:对于大多数开发者而言,这应该是大家非 ...
- HEVC (H.265)介绍(转)
[Liupin]: 这是一篇简单介绍H.265文章,我接触和开发H.265二年来,H.265技术在行业内接收速度比H.264快多了,现在国际和国内各大公司都在进行H.265应用,不管是IC设计还是H. ...
- 自动化无线网破解工具wifite2
自动化无线网破解工具wifite2 wifite是一款自动化wifi密码破解工具,特点是支持多个wep.wpa加密的wifi网络,不支持windows和osx. wifite的特点是可以同时攻击多个采 ...
- docker容器网络通信原理分析
概述 自从docker容器出现以来,容器的网络通信就一直是大家关注的焦点,也是生产环境的迫切需求.而容器的网络通信又可以分为两大方面:单主机容器上的相互通信和跨主机的容器相互通信.而本文将分别针对这两 ...
- [hihoCoder] 第五十周: 欧拉路·二
题目1 : 欧拉路·二 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回中小Hi和小Ho控制着主角收集了分散在各个木桥上的道具,这些道具其实是一块一块骨牌. 主角 ...
- js非常强大的日历控件fullcalendar.js, 日期时间库: moment.js
日历控件: https://fullcalendar.io/docs/ https://fullcalendar.io/docs/event_data/events_function/ https:/ ...
- 菜鸟学Java(十三)——将MyEclipse项目导入到Eclipse
最近由于种种原因,需要将以前用MyEclipse写的项目迁移到Eclipse中.但是当我将之前的项目import到Eclipse中后,发现根本不能运行.经过一番寻觅,终于让我找到了一种解决的办法.一起 ...
- Java 用栈实现队列
栈是先入后出,队列是先入先出.根据这个思想,可以用一个栈作为入队,另一个栈作为出队.只要把第一个栈的栈顶的元素压入第二个栈就好了,出队的时候输出第二个栈的栈顶,如果第二个栈的空了就需要不断操作从第一个 ...
- 把虚拟教练带回家,「EuMotus」想用AI实现高精度运动反馈系统
https://36kr.com/p/5089139.html 无需穿戴设备,只需一个红外摄像头和+已安装好EuMotus专利软件的手提电脑 由政府主导的高达2200亿美金的健身与运动支出,15%的健 ...