仅包含某些索引的Cosmos Db集合

时间:2018-07-04 15:19:44

标签: c# azure-cosmosdb

我试图在CosmosDb中对集合中的所有集合excludeinclude仅进行某些索引。

这是我的代码:

// A property in the class...
public override IEnumerable<IncludedPath> CollectionIndexes => new List<IncludedPath>
{
     new IncludedPath{ Path= "/\"CreatedOnUtc\""  }, // I have tried "/CreatedOnUtc" as well
     // few more indexes...    
};

// Code in the CreateCollection method...
collection.IndexingPolicy.ExcludedPaths.Add(new ExcludedPath { Path = "/*" }); // I have tried the code without this line as well
foreach (var path in CollectionIndexes) // Add indexes over certain properties only.
{
     collection.IndexingPolicy.IncludedPaths.Add(path);
}

运行代码时,我每次都会得到这个异常:

  

消息:{“错误”:[“索引路径'/ \” CreatedOnUtc \“'不能是   接受,位置“ 5”附近失败。请确保路径是   有效路径。常见错误包括无效字符或缺少   标签周围的引号。“]} ActivityId:   2627fe24-64a0-46b3-bf9a-13cb160c17a7,请求URI:   / apps / DocDbApp / services / DocDbMaster0 / partitions / 780e44f4-38c8-11e6-8106-8cdcd42c33be / replicas / 1p /,   RequestStats:,SDK:Microsoft.Azure.Documents.Common / 1.22.0.0,   documentdb-dotnet-sdk / 1.22.0主机/ 64位   MicrosoftWindowsNT / 10.0.16299.0

当我将路径更改为"/CreatedOnUtc"时,仍然看到相同的消息:

  

消息:{“错误”:[“索引路径'/ CreatedOnUtc'无法接受,   在位置“ 3”附近失败。请确保该路径是有效路径。   常见错误包括无效字符或引号周围没有   标签。“]} ActivityId:30dc7429-df87-4080-912e-60aa731ae809,请求   URI:   / apps / DocDbApp / services / DocDbMaster0 / partitions / 780e44f4-38c8-11e6-8106-8cdcd42c33be / replicas / 1p /,   RequestStats:,SDK:Microsoft.Azure.Documents.Common / 1.22.0.0,   documentdb-dotnet-sdk / 1.22.0主机/ 64位   MicrosoftWindowsNT / 10.0.16299.0

我错过了什么?这似乎是非常基本的东西,但是我在尝试各种组合时浪费了24小时!

我正在使用C#Sql API来这样做。我正在本地PC上的CosmosDb Emulator上进行尝试。

1 个答案:

答案 0 :(得分:2)

您似乎在索引路径的末尾缺少必要的通配符?

需要使用索引路径末尾的?字符来提供查询此属性的查询。如果您打算查询此路径的属性的子属性,则应使用字符*

您可以在indexing policies documentation page

上了解更多相关信息