分区集合中缺少 partitionKey 字段

Absence of partitionKey field in a partitioned collection

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

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

基于上述场景我的问题是,在过渡期间,新员工将go/persist到哪个分区,因为我没有部门(partitionKey)给他?

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

如果您使用的是分区集合,则需要在每次插入时为 partitionKey 提供一个值。选择用作 partitionKey 的内容取决于应用程序的需要和数据的性质。没有适合所有人的答案。从你可能想重新考虑使用 department 作为 partitionKey 的声音来看。

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

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

发生此类情况时,Cosmos DB 会将此类文档放在一个特殊分区中,通过指定 {}empty JavaScript object 作为查询中的分区键即可访问该分区。

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