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 ...
 
随机推荐
- python 取整的两种方法
			
问题简介: 要把一个浮点数(float)整数部分提取出来.比如把“2.1”变成“2”的这一过程:现在我们给这个过程起一个名字叫“取整”.那么它 在python中大致可以有两种写法 写法1)类型转换: ...
 - 如何在Windows环境下安装JDK
			
原文链接:http://android.eoe.cn/topic/android_sdk 1. JDK 的下载 JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了. 进入网页:htt ...
 - [LeetCode] Basic Calculator & Basic Calculator II
			
Basic Calculator Implement a basic calculator to evaluate a simple expression string. The expression ...
 - 给Java开发人员的Play Framework(2.4)介绍 Part1:Play的优缺点以及适用场景
			
1. 关于这篇系列 这篇系列不是Play框架的Hello World,由于这样的文章网上已经有非常多. 这篇系列会首先结合实际代码介绍Play的特点以及适用场景.然后会有几篇文章介绍Play与Spri ...
 - MYSQL MVCC实现及其机制
			
多版本并发控制 Multiversion Concurrency Control 大部分的MySQL的存储 引擎,比如InnoDB,Falcon,以及PBXT并不是简简单单的使用行锁机制.它们都使用了 ...
 - android:ellipsize="end" 失效或者 相关的Bug
			
其实这文章有点傻逼. 相关的问题 TextView android:ellipsize=“end”超出一个字符时不显示…的解决 http://www.pocketdigi.com/20140122/1 ...
 - 如何在JS数组特定索引处指定位置插入元素?
			
如何在JS数组特定索引处指定位置插入元素? 需求: 将一个元素插入到现有数组的特定索引处.听起来很容易和常见,但需要一点时间来研究它. // 原来的数组var array = ["one&q ...
 - 服务端 https和SSL
			
String keyStoreFilePassword = System .getProperty("keystore.file.password"); /usr/java/jdk ...
 - mui封装做好的手机版网站为apk
			
BOSS提到的一个功能,就是把已经做好的手机网站http://xxx.com/m/home/index ,想着看起来应该蛮简单,一个html页面里就一个iframe就好了,然后宽度和高度都设置为100 ...
 - UIScrollView中图片放大后不居中,或居中后移动有偏差解决办法
			
转自:http://blog.sina.com.cn/s/blog_6ae8b50d0100yret.html 问题的描述如下:要显示一张图片,也只需要显示一张图片,该图片可能很大,也可能很小,但是要 ...