如何从 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.IncludedPaths
和 containerProperties.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);
我创建了一个具有容器属性的容器,这个 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.IncludedPaths
和 containerProperties.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);