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)时,出现错误“文档不包含分片键”。
我已经尽我所能地尝试了此方法,并且每次都因该错误而被拒绝。我是在误解这是怎么工作的,还是做错了什么?
在文档中,微软说使用此命令通过 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”格式的内容)