我创建了一个使用MongoDB的pythonsdk的cosmsdb数据库,让我们将数据库称为school
,将集合称为students
。在创建数据库时,azureui要求我为无限存储容量创建一个shard key,我们称之为school.students
。在
我使用pymongo
添加以下文档:
{
"id": "abc123",
"name": "jack"
}
代码为:
^{pr2}$当我选择10GB的存储时,添加文档没有问题,但是当我选择带有shard key的unlimited选项时,我得到了以下错误:
pymongo.errors.WriteError: document does not contain shard key at 'school.students'
问题是,我应该在哪里使用碎片密钥?如何克服这一切?在
MongoDB中的
shard key
映射到Cosmos DB中的partition key
。创建集合时,如果是通过门户创建的,则会要求您指定分区键。或者您可以通过MongoDB的命令行工具或代码指定shard key(在这里它被称为shard key)。该碎片密钥必须存在于您的文档中。在在您的例子中,您的文档只包含}(您可以使用其中任何一个作为切分密钥)。或者,可以指定一个附加属性作为切分密钥。例如,
id
和{schoolid
:创建集合时,应指定
schoolid
作为分区键。此时,您的文档保存就可以工作了,因为您的文档中将包含一个碎片密钥(分区密钥)。在在原始示例中,您指定了
^{pr2}$school.students
作为切分键。这就需要您拥有一个名为school
的属性和一个名为students
的子属性(我猜这没什么意义):您可以通过mongoshell创建集合
相关问题 更多 >
编程相关推荐