ComosDB-MongoAPI-文档不包含分片键

QTo*_*Tom 9 c# azure azure-cosmosdb

我正在使用CosmosDB(以前是DocumentDB)进行调查,我们目前使用MongoDB,因此我试图将MongoAPI用于CosmosDB。

我已经在azure中创建了一个CosmosDB部署,创建了一个集合,并指定了“ / rateId”分区键。

据我从Microsoft的文档了解,此分区键应与我插入的每个文档中的一个属性相关,因此我试图插入一个基本文档,如下所示:

{
    "rateId": "test.1",
    "val": "test2"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试插入此内容(通过Mongo C#驱动程序或通过MongoChef)时,出现错误“文档不包含分片键”。

在此处输入图片说明

我已经尽我所能地尝试了此方法,并且每次都因该错误而被拒绝。我是在误解这是怎么工作的,还是做错了什么?

QTo*_*Tom 4

在文档中,微软说使用此命令通过 mongo shell 创建集合

db.runCommand( { shardCollection: "myDb.myCollection", key: { rateId: "hashed" } } )
Run Code Online (Sandbox Code Playgroud)

我用它来创建一个集合,现在它按预期工作(带有rateId属性的文档插入正常,没有出现“无分片键”错误)。

在 Azure 门户中查看集合时,它会将分片键显示为

$v.rateId.$v
Run Code Online (Sandbox Code Playgroud)

而当我通过门户创建集合并指定 /rateId 作为分区时,它显示为

rateId
Run Code Online (Sandbox Code Playgroud)

至少我现在可以进步,但我很困惑为什么它会这样,或者这是否就是它的意思(我在文档中看不到任何提及此“$v”格式的内容)

  • 我们在 Scala 应用程序中遇到了同样的问题。我们在命令行上使用 `az cosmosdb collection create` 来设置 Cosmos,并且 `--partition-key-path` 的参数必须是 `"/'\$v'${PARTITION_KEY_PATH}/'\$v '"` 而不是 `"${PARTITION_KEY_PATH}"` 才能工作。我也很想知道 $v 是什么意思! (2认同)
  • 这仍然是一个问题吗?我正在使用 Azure CLI 创建集合和分区键,但遇到了同样的问题。 (2认同)