2017-10-30 7 views
0

Azure Portalの "Query Explorer"を使用して簡単なクエリを実行しています。ここでAzure CosmosDb:注文のアイテムに範囲インデックスが必要

は私のクエリです:

SELECT * FROM c 
WHERE c.DataType = 'Fruit' 
AND c.ExperimentIdentifier = 'prod' 
AND c.Param = 'banana' 
AND Contains(c.SampleDateTime, '20171029') 
ORDER BY c.SampleDateTime DESC 

しかし、私は例外を取得:

注文ごとの項目は、対応するインデックスパス上で定義される範囲のインデックスが必要です。

エラーに関するヘルプへのリンクはありません。そのエラーメッセージから、頭から尾を作ることはできません。

なぜ私のクエリが失敗し、どうすれば修正できますか?

P.S._tsのプロパティは、レコードが挿入された時点では注文したくないので、私には良くありません。

+0

https://docs.microsoft.com/en-us/azure/cosmos-db/ワーキングと日付#indexing-datetimes-for-range-queries –

答えて

2

ORDER BYは索引から直接提供されるため、索引付き索引付けではなく、索引付き索引付けが必要です。

注文番号の項目を範囲(数字と文字列の両方)としてのみインデックスできますが、私のアドバイスは、すべてのパスを-1の精度で範囲としてインデックス化することです。

基本的に、あなたはこのようなものであるためにあなたのコレクションのインデックス作成ポリシーを更新する必要があるだろう:

{ 
     "automatic": true, 
     "indexingMode": "consistent", 
     "includedPaths": [ 
      { 
       "path": "/", 
       "indexes": [ 
        { "kind": "Range", "dataType": "Number", "precision": -1 }, 
        { "kind": "Range", "dataType": "String", "precision": -1 } 
       ] 
      } 
     ] 
    } 
関連する問題