Azure cosmosdb 在Azure Cosmos MongoDB上设置TTL

Azure cosmosdb 在Azure Cosmos MongoDB上设置TTL,azure-cosmosdb,Azure Cosmosdb,我想在Azure Cosmos上使用mongoDB。 我需要正确设置分区。 我需要实现TTL来删除超过一个月的文档 我当前正在使用以下代码创建集合: var command = new JsonCommand<BsonDocument>("{ shardCollection: \"steps.steps\", key: { SlipID: \"hashed\" } }"); db.RunCommand(command); var command=ne

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

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

var command = new JsonCommand<BsonDocument>("{ shardCollection: \"steps.steps\", key: { SlipID: \"hashed\" } }");
                db.RunCommand(command);
var command=newjsoncommand({shardCollection:\'steps.steps\',key:{SlipID:\'hashed\'});
db.RunCommand(command);
这将创建集合,并且我可以成功地将文档插入其中。该代码基于以下条款:

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

现在,当我尝试将文档插入集合时,出现以下错误:
命令插入失败:必须为此操作提供PartitionKey值。

为什么?

编辑:当我保存时,azure portal似乎正在删除这个平淡的索引。当我再次添加索引时,我可以再次添加文档。如何使用mongodb c#驱动程序在集合上设置TTL,而不破坏任何其他内容


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

您为partitionKey选择了什么值?是不是很滑?“添加索引”是什么意思。您是否真的要进入“缩放和设置”部分并手动修改索引策略?根据文档,上面的“shardCollection”命令设置分片并创建索引。是的,SlipID是索引。我通过从c#:steps.Indexes.CreateOne(Builders.IndexKeys.Hashed(x=>x.SlipID))调用运行以下代码来重新创建索引;