我想在Azure Cosmos上使用mongoDB . 我需要正确设置分区 . 我需要实现TTL来删除超过一个月的文档 .

我目前正在使用以下代码创建集合:

var command = new JsonCommand<BsonDocument>("{ shardCollection: \"steps.steps\", key: { SlipID: \"hashed\" } }");
                db.RunCommand(command);

这创建了集合,我可以成功地将文档插入其中 . 代码基于这篇文章:https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data

现在我需要设置TTL . 在azure门户网站上,我转到集合(在Data Explorer下),并将TTL切换为On,然后保存 .

现在,当我尝试将文档插入集合时,我收到此错误: Command insert failed: PartitionKey value must be supplied for this operation.

为什么?

编辑:当我保存时,看起来azure portal正在删除SlipID索引 . 当我再次添加索引时,我可以再次添加文档 . 如何使用mongodb c#驱动程序在集合上设置TTL,而不会破坏其他任何内容?

编辑:即使重新创建索引,我仍然会定期得到上述错误 . 我可以看到目前有10个分区 . 我怀疑创建新分区时会发生错误,并插入第一个条目 . 我没办法证明这一点 .