5

Microsoft Azure Documents BadRequestException 使用过滤器指定了无效查询,该过滤器针对非范围索引的路径。考虑在请求中添加允许扫描标头。

我的查询是:

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

超过 ??文档数量(因为无法使用 DocumentDB 获取集合中的文档数量)

4

2 回答 2

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 库中有类似的功能。

创建集合时,可以通过 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 
  });
于 2015-02-09T22:52:27.207 回答
2

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

于 2016-11-25T15:49:45.757 回答