单个属性

时间:2016-02-01 23:25:59

标签: sql azure azure-cosmosdb document-database

我正在尝试仅为expireDate属性设置索引范围。我写了以下索引。这是对的吗?

如果我使automatic = false,我无法查询。但是,我担心的是因为automatic = true,所有级别的所有属性都被编入索引,这是我不想要的。

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

1 个答案:

答案 0 :(得分:4)

如果ExpireDate是一个数字,那么这是正确的。如果它表示为字符串,例如ISO-8601,你想在字符串和数字上设置Range的索引,就像下面的存根一样。请注意,这是配置

    {
      "path": "/ExpireDate/?",
      "indexes": [
        {
          "kind": "Range",
          "dataType": "Number",
          "precision": -1
        },
        {
          "kind": "Range",
          "dataType": "String",
          "precision": -1
        }
      ]
}

在大多数情况下,应将自动设置为true。它表示是否应该选择文档来默认索引。如果这是错误的,则需要在文档写入时明确传入IndexingDirective.Include。如果将其设置为true,则需要传入IndexingDirective.Exclude以显式排除文档。只有上面规则所涵盖的路径(默认所有内容,在本例中为ExpireDate)将被索引,而不管自动的真/假。