This link意味着可以通过查看设置在Cosmos DB容器中看到唯一键。但是,我似乎无法使用门户和存储资源管理器找到它们。如何查看现有Cosmos DB容器上的唯一键?我有一个文档由于键冲突而无法加载,这应该是不可能的,所以我需要确认键是什么。
zwghvu4y1#
查看Cosmos DB唯一键的一种稍微简单一点的方法是查看资源的ARM模板。在你的Cosmos DB账户上,点击设置/导出模板-让模板生成并在完成后在线查看。你会在“uniqueKeyPolicy”标签下找到它们。
dluptydi2#
基于此blob,唯一密钥策略应如下所示:
"uniqueKeyPolicy": { "uniqueKeys": [ { "paths": [ "/name", "/country" ] }, { "paths": [ "/users/title" ] } ] }
但是,我和你一样在传送门上看不到它,可能是这里有个bug。您可以使用cosmos db sdk作为获得唯一密钥策略的变通方法,请参阅我的java示例代码。
ResourceResponse<DocumentCollection> response1 = documentClient.readCollection("dbs/db/colls/test", null); DocumentCollection coll =response1.getResource(); UniqueKeyPolicy uniqueKeyPolicy = coll.getUniqueKeyPolicy(); Collection<UniqueKey> uniqueKeyCollections = uniqueKeyPolicy.getUniqueKeys(); for(UniqueKey uniqueKey : uniqueKeyCollections){ System.out.println(uniqueKey.getPaths()); }
f87krz0w3#
下面是我使用的基本代码。编写集合的代码以Json格式输出。我认为这与您在门户中看到的类似,但它跳过或省略了uniqueKeyPolicy信息。作为侧记,我想我发现了一个bug或奇怪的行为。插入新文档可能会抛出unique index constraint violation,但更新不会。
unique index constraint violation
this.EndpointUrl = ConfigurationManager.AppSettings["EndpointUrl"]; this.PrimaryKey = ConfigurationManager.AppSettings["PrimaryKey"]; string dbname = ConfigurationManager.AppSettings["dbname"]; string containername = ConfigurationManager.AppSettings["containername"]; this.client = new DocumentClient(new Uri(EndpointUrl), PrimaryKey); DocumentCollection collection = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri(dbname, containername)); Console.WriteLine("\n4. Found Collection \n{0}\n", collection);
vd8tlhqk4#
支持在集合属性中显示唯一键策略,同时可以使用DocumentDBStudio查看集合中的唯一键,唯一键策略一旦设置就不能修改。WRT奇怪的行为,你能分享完整的隔离再现并解释预期和实际的行为吗?
cxfofazt5#
Image: Azure Portal - Cosmos DB - Export Template Location在这里你可以在你的Azure门户中查看ARM模板,正如赢家评论所说,你会在“uniqueKeyPolicy”标签下找到唯一的密钥。Image: uniqueKeyPolicy in the ARM Template
5条答案
按热度按时间zwghvu4y1#
查看Cosmos DB唯一键的一种稍微简单一点的方法是查看资源的ARM模板。
在你的Cosmos DB账户上,点击设置/导出模板-让模板生成并在完成后在线查看。你会在“uniqueKeyPolicy”标签下找到它们。
dluptydi2#
基于此blob,唯一密钥策略应如下所示:
但是,我和你一样在传送门上看不到它,可能是这里有个bug。
您可以使用cosmos db sdk作为获得唯一密钥策略的变通方法,请参阅我的java示例代码。
f87krz0w3#
下面是我使用的基本代码。编写集合的代码以Json格式输出。我认为这与您在门户中看到的类似,但它跳过或省略了uniqueKeyPolicy信息。
作为侧记,我想我发现了一个bug或奇怪的行为。插入新文档可能会抛出
unique index constraint violation
,但更新不会。vd8tlhqk4#
支持在集合属性中显示唯一键策略,同时可以使用DocumentDBStudio查看集合中的唯一键,唯一键策略一旦设置就不能修改。
WRT奇怪的行为,你能分享完整的隔离再现并解释预期和实际的行为吗?
cxfofazt5#
Image: Azure Portal - Cosmos DB - Export Template Location
在这里你可以在你的Azure门户中查看ARM模板,正如赢家评论所说,你会在“uniqueKeyPolicy”标签下找到唯一的密钥。
Image: uniqueKeyPolicy in the ARM Template