如何从 CosmosDB 中的现有容器中获取带有索引的 ContainerProperties

How can I get the ContainerProperties with Indexes from an existing container in CosmosDB

我创建了一个具有容器属性的容器,这个 ContainerProperties 包含索引。

以后如何从 cosmos 取回 ContainerProperties。 我使用以下代码:

FeedIterator<ContainerProperties> resultSet = CosmosDatabase.GetContainerQueryIterator<ContainerProperties>( ($"select * from c where c.id = \"{collectionName}\"") );
FeedResponse<ContainerProperties> queryProperties = resultSet.ReadNextAsync().Result;

ContainerProperties containerProperties = queryProperties.Resource.ToList().FirstOrDefault()

有一个ContainerProperties,名称填写正确,这就是我想要的,但索引是空的。 containerProperties.IndexingPolicy.IncludedPathscontainerProperties.IndexingPolicy.ExcludedPaths 不包含任何元素。但是当我创建它时,它确实如此。

根据评论,您使用的是预览版SDK,请更新至latest GA release,此时为3.0.0

在该版本中,运行 您共享的代码,returns 填充了 IndexingPolicy 的 ContainerProperties 实例。

ContainerProperties containerDefinition = new ContainerProperties(new Guid().ToString(), "/id");
containerDefinition.IndexingPolicy.ExcludedPaths.Add(new Cosmos.ExcludedPath()
{
    Path = "/*"
});
ContainerResponse response = await cosmosDatabase.CreateContainerAsync(containerDefinition);
FeedIterator<ContainerProperties> resultSet = cosmosDatabase.GetContainerQueryIterator<ContainerProperties>(($"select * from c where c.id = \"{response.Container.Id}\""));
FeedResponse<ContainerProperties> queryProperties = resultSet.ReadNextAsync().Result;
ContainerProperties containerSettings = queryProperties.Resource.ToList().FirstOrDefault();
Assert.AreEqual(containerDefinition.IndexingPolicy.ExcludedPaths.First().Path, containerSettings.IndexingPolicy.ExcludedPaths.First().Path);