0

Mongodb 可以选择在文档上设置 TTL。

我想知道是否有类似的功能允许在特定时间后更新特定字段。

基本上我想要实现的是在特定时间后将文档的字段状态从 PENDING 更新为 EXPIRED(仅当它是 PENDING 时)。

我知道我可以使用 cronjobs,但首先我想检查它是否可以在本地使用 Mongodb。

此外,是否可以根据条件设置 TTL?就像仅在状态已过期时才在 X 天后删除文档?

4

2 回答 2

1

我想要实现的是在特定时间后将文档的字段状态从 PENDING 更新为 EXPIRED

今天无法实现,您必须创建自己的脚本

此外,是否可以根据条件设置 TTL?就像仅在状态已过期时才在 X 天后删除文档?

我建议您也设置设置状态的脚本,readyToBeDeletedSince: Date并将您的 TTL 放在该字段上。

于 2021-04-02T10:27:02.283 回答
0

关于带条件的 TTL,我发现有一个名为“partialFilterExpression”的选项可以添加到索引中。

例如,仅当状态为“PENDING”时,以下内容才会在 5 分钟后删除文档

db.mymodel.createIndex({ createdAt: 1 }, { expireAfterSeconds: 300, partialFilterExpression: { status: 'PENDING' } })
于 2021-05-06T14:34:10.250 回答