2016-02-01 28 views
1

我想范围索引只ExpireDate属性。我写了下面的索引。这是对的吗?documentdb索引的单个属性

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

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

当您将其设置为false时会得到什么错误?什么是ExpireDate属性的数据类型?最后我记得,DocDB不支持日期时间范围查询 - 尽管最近可能发生了变化。 –

+0

我已经让他们unixdate时间。所以他们实际上是长期的价值。 – Ahmet

回答

2

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

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

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