2016-02-01 25 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)將被索引,而不管自動真/假。