分区集合中缺少partitionKey字段

时间:2017-06-02 11:18:10

标签: azure azure-cosmosdb

DocumentDB是真正的架构,意味着它不会强制您只拥有某种文档,而且它是用户的选择。

考虑到分区集合中的上述要点(假设部门为Employee文档中的partitionedKey),用户决定不传递任何partitionKey(只是一个用例来支持我的观点,一个新员工/实习生加入但尚未决定他将在哪个部门工作,之后他们可能会在适当的部门更新文件)

基于上述情况,我的问题是,在过渡期间,新员工将去/持哪个分区,因为我没有为他设一个部门(partitionKey)?

{
  "eid": "",
  "entryType": "",
  "address": 
  {
    "PIN": "",
    "city": "",
    "street": ""
  },
  "name": "",
  "id": "",
  "age":
}

2 个答案:

答案 0 :(得分:2)

好问题!当我们开始使用分区集合时,我们有相同的查询。

根据我的理解,当然可以在分区集合中创建文档而不指定分区键属性(在您的情况下为departmentId),但不建议这样做。

当发生此类事件时,Cosmos DB会将此类文档放入可通过在查询中指定{}empty JavaScript object作为分区键来访问的特殊分区。

但是,请记住,您无法更新分区键属性值(在您的示例中为员工分配了一个部门)。您必须使用正确的分区键删除并重新创建文档。

答案 1 :(得分:0)

如果您正在使用分区集合,则需要在每次插入时为partitionKey提供值。选择使用partitionKey的方法取决于应用程序的需求和数据的性质。没有一个尺寸适合所有答案。从你可能想要重新考虑使用部门作为partitionKey的事情的声音。