gpt4 book ai didi

mongodb - 在 Mongo DB 的上限集合中跟踪已删除的文档

转载 作者:可可西里 更新时间:2023-11-01 10:04:13 25 4
gpt4 key购买 nike

是否有任何选项允许在文档从上限集合中删除时跟踪文档?

例如,我有一个状态为已处理或未处理的订单列表。因此,当 mongo 决定删除某些文档时,我希望每次都将订单保留在上限集合中并检查状态。如果订单已处理 - 那么,很酷,让他离开,但如果未处理,则将其推回队列。

最佳答案

Capped collections是固定大小的集合,一旦集合已满,就会通过覆盖它们来自动删除最旧的文档(基于插入顺序)。

从概念上讲,上限集合是一个循环缓冲区而不是队列。

这听起来不太适合持久化订单信息的用例——当文档被删除时,如果您的上限集合太小,则没有“钩子(Hook)”将文档重新插入到上限集合中您可以在处理文档之前覆盖它们。

我认为您真的想要使用普通(无上限)集合。

根据状态删除旧订单

如果您想根据某个状态值删除订单,您应该在您的应用程序代码中进行处理(例如,当订单从“待定”状态变为“已处理”状态时,请执行所需的任何清理操作)。

根据时间删除旧的/过期的订单

如果您希望在特定时间自动删除旧的/过期的订单,一个好的方法是使用带有 document-level Time-To-Live (TTL) expiry 的普通集合。 ,例如:

db.orders.ensureIndex( { "expireAt": 1 }, { expireAfterSeconds: 0 } )

然后您可以根据 expireAt 日期设置(或延长)每个订单文档的到期时间。请注意,如果您需要同时检查 expireAt 值和状态字段(TTL 到期仅基于提供的日期索引),这可能不是一个合适的选项。

关于mongodb - 在 Mongo DB 的上限集合中跟踪已删除的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com