I am investigating using CosmosDB (previously DocumentDB), we currently use MongoDB so I am trying to use the MongoAPI for CosmosDB.
I have created a CosmosDB deployment in azure, created a collection and specified a partition key of "/rateId".
As far as I can understand from Microsofts documentation this partition key should relate to a property in each document I insert, so I am trying to insert a basic document like so:
{
"rateId": "test.1",
"val": "test2"
}
However when I try to insert this (through Mongo C# driver or through MongoChef) I get an error "document does not contain shard key".
I have tried this every which way I can think of and every time I am denied with this error. Am I misunderstanding how this is meant to work, or doing something wrong?
In the documentation Microsoft say to use this command for creating a collection through the mongo shell
db.runCommand( { shardCollection: "myDb.myCollection", key: { rateId: "hashed" } } )
I used that to create a collection and it now works as expected (docs with a rateId property insert ok, without I get the "no shard key" error).
When looking at the collection in the Azure Portal it shows the shard key as
$v.rateId.$v
Whereas when I created the collection through the portal and specified /rateId as the partition, it showed it as just
rateId
At least I can progress now, but I'm confused why it behaves this way or if this is how it's meant to be (I can't see any mention of this "$v" format on the documentation)