DocumentDB - 无法比较查询中的两个路径

时间:2015-02-09 20:31:12

标签: azure azure-cosmosdb

Microsoft Azure文档BadRequestException指定了一个无效查询,其中包含针对未进行范围索引的路径的过滤器。请考虑在请求中添加允许扫描标头。

我的查询是:

SELECT c.id FROM users c WHERE (c.lat < 29.89)

OVER ??文档数量(因为没有办法获取DocumentDB集合中的文档数量)

2 个答案:

答案 0 :(得分:3)

如果你看一下这里的博文: http://azure.microsoft.com/blog/2015/01/27/performance-tips-for-azure-documentdb-part-2/

  

索引策略提示#3:为所有路径指定范围索引路径类型   用于范围查询

     

DocumentDB目前支持两种索引路径类型:Hash和Range。   选择Hash的索引路径类型可实现高效的相等性   查询。选择Range的索引类型可启用范围查询(使用   >, <, >=, <=)

它在C#中给出了一个示例,用于添加范围索引以使路径具有可比性,但node.js library.

中有类似的功能

创建集合时,可以通过body参数传递IndexingPolicy。 IndexingPolicy有几个成员。其中一个是IncludedPaths,您可以在其中定义索引。

var policy = { 
   Automatic: true,
   IndexingMode: 'Lazy',
   IncludedPaths: [
      {
      IndexType: "Range",
      Path: "path to be indexed (c.lat)",
      NempericPrecission: "1",
      StringPrecission: "1"
      }
   ],
   ExcludedPaths: []
}

client.createCollection(
  '#yourdblink', 
  { 
    id: 10001, 
    indexingPolicy: policy 
  });

答案 1 :(得分:2)

可以在新的Azure门户(https://portal.azure.com),(您的DocumentDB资源) - &gt;下更改策略。设置 - &gt;索引政策。