我想在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个分区。我怀疑创建新分区时会发生错误,并插入第一个条目。我无法证明这一点。