Microsoft Azure Documents BadRequestException 使用过滤器指定了无效查询,该过滤器针对非范围索引的路径。考虑在请求中添加允许扫描标头。
我的查询是:
SELECT c.id FROM users c WHERE (c.lat < 29.89)
超过 ??文档数量(因为无法使用 DocumentDB 获取集合中的文档数量)
Microsoft Azure Documents BadRequestException 使用过滤器指定了无效查询,该过滤器针对非范围索引的路径。考虑在请求中添加允许扫描标头。
我的查询是:
SELECT c.id FROM users c WHERE (c.lat < 29.89)
超过 ??文档数量(因为无法使用 DocumentDB 获取集合中的文档数量)
如果您在此处查看博文: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
});
可以在(您的 DocumentDB 资源)-> 设置 -> 索引策略下的新 Azure 门户 ( https://portal.azure.com )中更改该策略。