是否有使用officialmongodriver按键配置数据自删除的正确方法??我在Mongo-driver模块中找到的唯一方法是ExpireAfterSeconds,但我不确定如何正确使用它。这是repository与目前准备好的东西。 最佳答案 你需要在n秒后需要删除的字段上创建一个ttl索引。在下面的代码片段中,创建了一个可以设置ttl的expirationTime字段。在记录中设置的expirationTime60秒后,记录将被删除。以下是创建TTL索引的代码:varttl*int32*ttl=60keys:=bsonx.D
从MongoDB2.2开始,可以将“ExpireDatafromCollectionsUsingaTTL”实现为一种特殊的索引类型。最新版本的DoctrineORM支持这个IndexOption.不幸的是,我无法找到如何使用原则注释/配置文件正确设置此索引。这就是我尝试做的方式,我希望有人能帮助我正确设置它:然后当我执行phpapp/consoledoctrine:mongodb:schema:update时(在symfony2.3.x中)索引已生成,但生成的索引看起来不正确。这是我在数据库中执行db.system.indexes.find();时得到的结果:{"v":1,"key":
我正在开发一个将历史日志存储在MongoDB集合中的PHP应用程序。1小时后,这些数据不再重要,并被每小时运行一次的CRON进程删除。问题来了,有没有其他办法可以让这些文件插入一段时间后自动删除呢?非常感谢! 最佳答案 要在一定秒数后使文档过期,您可以创建一个TTL索引,它是一个特殊的索引属性,它依赖于mongod中的后台线程,该线程读取目标索引日期值并对那些已过期的索引执行删除操作。为此,您需要一个createdAt字段来存储日志集合中的插入日期,例如,您可以使用“newDate()”要为集合启用TTL,请使用ensureInde
我在本地和SpringBoot存储库中使用单个实例MongoDB,我使用以下注释对文档类进行注释:@Indexed(name="deleteAt",expireAfterSeconds=0)privateLocalDateTimedeleteAt;正如我从文档中读到的那样here,文档应在指定的DateTime自动删除。它主要工作,但当我经常轮询同一个文档时,我发现删除有延迟。大多数文档被立即删除,但有些文档在指定的删除时间后仍保留在数据库中长达30秒。这让我想知道MongoDB是否运行调度程序来清理此类文档,如果是,它运行的频率如何? 最佳答案
我一直在考虑使用内置TTL功能,但是动态更改过期日期并不容易。由于mongodb正在使用后台任务清除数据。仅根据“>certain_date”编写我自己的清除功能并每天运行一次是否有任何缺点?这样,我可以动态更改TTL值,并且此日期字段不必是单个索引。我可以将此字段作为复杂索引的一部分重用,以最大限度地减少索引数量。 最佳答案 有两种方法可以设置expirationdateonaTTLcollection:在全局级别,创建索引时每个文档,作为文档中的一个字段这些模式是专有的。全局到期如果您希望所有文档在创建后3个月过期,请使用第一种
我一直在考虑使用内置TTL功能,但是动态更改过期日期并不容易。由于mongodb正在使用后台任务清除数据。仅根据“>certain_date”编写我自己的清除功能并每天运行一次是否有任何缺点?这样,我可以动态更改TTL值,并且此日期字段不必是单个索引。我可以将此字段作为复杂索引的一部分重用,以最大限度地减少索引数量。 最佳答案 有两种方法可以设置expirationdateonaTTLcollection:在全局级别,创建索引时每个文档,作为文档中的一个字段这些模式是专有的。全局到期如果您希望所有文档在创建后3个月过期,请使用第一种