我试图在CosmosDb中对集合中的所有集合exclude
和include
仅进行某些索引。
这是我的代码:
// 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
上进行尝试。
答案 0 :(得分:2)
您似乎在索引路径的末尾缺少必要的通配符?
。
需要使用索引路径末尾的?
字符来提供查询此属性的查询。如果您打算查询此路径的属性的子属性,则应使用字符*
。