DocumentDb中文档的同一字段上的不同类型的索引

时间:2017-04-07 12:27:04

标签: azure azure-cosmosdb

我有一个集合,其中文档具有不同类型的属性,如字符串,数字,日期时间。

我的索引政策如下:

  {
  "indexingMode": "consistent",
  "automatic": true,
  "includedPaths": [
    {
      "path": "/*",
      "indexes": [
        {
          "kind": "Range",
          "dataType": "Number",
          "precision": -1
        },
        {
          "kind": "Hash",
          "dataType": "String",
          "precision": 3
        }
      ]
    }
  ],
  "excludedPaths": []
}

现在我想要的是在String字段上添加Range类型索引。 所以我编辑了我的索引政策,如:

 {
  "indexingMode": "consistent",
  "automatic": true,
  "includedPaths": [
    {
      "path": "/*",
      "indexes": [
        {
          "kind": "Range",
          "dataType": "Number",
          "precision": -1
        },
        {
          "kind": "Hash",
          "dataType": "String",
          "precision": 3
        },
        {
          "kind": "Range",
          "dataType": "String",
          "precision": 20
        }
      ]
    }
  ],
  "excludedPaths": []
}

但它不起作用:(

我知道可以在字段上添加多种类型索引。任何人都可以知道如何做到这一点?

1 个答案:

答案 0 :(得分:1)

对于给定的数据类型,指定路径只能有一种索引类型(哈希或范围)。在支持的查询方面,Range也是Hash的超集。 Hash仅支持相等查询,但Range支持查询的相等性,范围和顺序。

所以你只需要删除Hash on String的JSON块,例如如下所示,索引策略更新将成功:

 {
  "indexingMode": "consistent",
  "automatic": true,
  "includedPaths": [
    {
      "path": "/*",
      "indexes": [
        {
          "kind": "Range",
          "dataType": "Number",
          "precision": -1
        },
        {
          "kind": "Range",
          "dataType": "String",
          "precision": 20
        }
      ]
    }
 ],
  "excludedPaths": []
}