在Azure Cosmos MongoDB上设置TTL

时间:2017-05-25 11:25:02

标签: azure-cosmosdb

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

0 个答案:

没有答案