在CosmosDB中存储分区键:分区键列无数据是否正常?
Cosmos DB容器浏览器看不到复合分区键值是否正常?
我理解分区键的概念,但缺乏实用经验。现有如下JSON数据:
{ "agendaId": "688c99bc-c756-4b8f-9c39-60246c0ea66e", "postId": "f07f16e5-e7d6-441e-bc1d-82ac671e0f63", "name": "john doe" }
我将容器的分区键定义为/agendaId/postId,插入数据后,在Cosmos DB容器浏览器的分区键列中看不到任何数据,仅能看到自动生成的Id,请问这是正常现象吗?
回答
这种情况不正常,问题出在你定义的分区键路径格式错误:
- 复合分区键的正确格式是用逗号分隔多个独立的属性路径,比如
/agendaId,/postId,而不是/agendaId/postId。后者的格式是用于指向嵌套对象中的属性,比如只有当你的数据结构是{"agendaId": {"postId": "xxx"}}时,这个路径才能读取到对应值。 - 你的数据里
agendaId是字符串类型,并非嵌套对象,所以Cosmos DB无法通过/agendaId/postId路径找到有效的分区键值,最终导致分区键列显示为空。 - 解决步骤:删除当前容器,重新创建容器并将分区键设置为
/agendaId,/postId,之后重新插入数据,就能在容器浏览器的分区键列看到组合后的分区键值了。
内容的提问来源于stack exchange,提问作者Marco Jr
相关产品推荐
相关产品推荐

