、异步执行

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学习(七) 异步工作以及维度查询的更多相关文章

  1. (转)MyBatis框架的学习(七)——MyBatis逆向工程自动生成代码

    http://blog.csdn.net/yerenyuan_pku/article/details/71909325 什么是逆向工程 MyBatis的一个主要的特点就是需要程序员自己编写sql,那么 ...

  2. IBatis.Net学习笔记六--再谈查询

    在IBatis.Net学习笔记五--常用的查询方式 中我提到了一些IBatis.Net中的查询,特别是配置文件的写法. 后来通过大家的讨论,特别是Anders Cui 的提醒,又发现了其他的多表查询的 ...

  3. MySQL订单分库分表多维度查询

    转自:http://blog.itpub.net/29254281/viewspace-2086198/ MySQL订单分库分表多维度查询  MySQL分库分表,一般只能按照一个维度进行查询. 以订单 ...

  4. SQL反模式学习笔记18 减少SQL查询数据,避免使用一条SQL语句解决复杂问题

    目标:减少SQL查询数据,避免使用一条SQL语句解决复杂问题 反模式:视图使用一步操作,单个SQL语句解决复杂问题 使用一个查询来获得所有结果的最常见后果就是产生了一个笛卡尔积.导致查询性能降低. 如 ...

  5. MyBatis学习七:spring和MyBatis整合

    <\mybatis\day02\16mybatis和spring整合-sqlSessionFactory配置.avi;> MyBatis学习七:spring和MyBatis整合.逆向工程 ...

  6. SVG 学习<七> SVG的路径——path(1)直线命令、弧线命令

    目录 SVG 学习<一>基础图形及线段 SVG 学习<二>进阶 SVG世界,视野,视窗 stroke属性 svg分组 SVG 学习<三>渐变 SVG 学习<四 ...

  7. day 85 Vue学习七之vue-cookie

      Vue学习七之vue-cookie   通过vue如何操作cookie呢 参考链接:https://www.jianshu.com/p/535b53989b39 第一步:安装vue-cookies ...

  8. oracle学习 第一章 简单的查询语句 ——03

    1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...

  9. 数据库学习笔记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 ...

随机推荐

  1. python selenium 报错unknown error: cannot focus element 解决办法

    登录框由于js限制,定位到元素后无法sendkey ,sendky报错如下: selenium.common.exceptions.WebDriverException: Message: unkno ...

  2. springboot 项目单元测试

    项目结构如下 1 引入测试的 maven 依赖 <dependency> <groupId>org.springframework.boot</groupId> & ...

  3. Nginx+tomcat组合实现高并发场景的动静分离和负载均衡方案

    简介 Java服务大多是跑在tomcat里,但是众所周知tomcat的并发性能没有优势(tomcat8及以上的版本可能有所改善),所以为了更好的适应高并发的应用场景,我们可以使用tomcat+ngin ...

  4. c++中浮点数精度设置

    1.包含头文件<iomanip>,附注manip是manipulator,操控的简写. 2.第一种写法: cout<<setiosflags(ios::); 第二种写法: co ...

  5. .NET CORE2.0发布后没有 VIEWS视图页面文件

    以前做的CORE1.0的项目,发布的时候有views文件夹的,升级VS后用CORE2.0做项目,发布后没有views文件夹了,全编译到一个类似于Niunan.ZYYCY.Web.Precompiled ...

  6. 深入理解Linux内核-回收页框

    Linux 系统在为用户态进程和内核分配动态内存的时候,所作的检查是马马虎虎的对内核使用的许多磁盘高速缓存和内存高速缓存大小也同样不作限制. 页框回收算法(PFRA):1.在所有内存使用完之前,就必须 ...

  7. 注册vue组件的几种方式

    1,全局注册(这种方式注册组件必须在vue实例化之前声明) Vue.component('tag-name',{}) 2,局部注册 var Child = { template: '<div&g ...

  8. sql server2000导出表结构说明

    SELECT 表名 then d.name else '' end, 表说明 then isnull(f.value,'') else '' end, 字段序号=a.colorder, 字段名=a.n ...

  9. javascript基础拾遗(一)

    1.判断变量类型 var num = '123'; if(typeof num == 'number'){ alert('this is a number'); } else{ throw 'this ...

  10. Python 操作redis有序集合(sorted set)

    #coding:utf8 import redis r =redis.Redis(host=") 1.Zadd Zadd 命令用于将一个或多个成员元素及其分数值加入到有序集当中.如果某个成员 ...