我有一个mongodb集合testdata
,其中包含一个名为insertTime
的字段。我们需要删除超过60天的数据。因此,以前要从集合中删除所有超过60天的文档的旧数据-〉我会使用以下逻辑,首先找到删除日期,然后将其与updateTime进行比较:
var date = new Date();
var daysToDeletion = 60;
var deletionDate = new Date(date.setDate(date.getDate() - daysToDeletion));
deletionDate = deletionDate.toISOString()
printjson(insertDate);
db.testdata.find({"insertTime":{ $lt: deletionDate}})
但是现在,我想删除比记录的alive
时间更早的数据。存活时间将计算为insertTime + endTime(60天)。现在,应该删除比此存活时间- 60天更早的文档。有人能帮我实现吗?
所有我能想到的是这样的东西,但我不认为命令是正确的:
db.testdata.find({"insertTime"+endTime:{ $lt: deletionDate}})
我如何在mongodb find命令查询中实现这一点?请提供关于这方面的见解。非常感谢。
我已经添加了以上所有的细节和我想达到的目标。
2条答案
按热度按时间vsikbqxv1#
您可以使用
$dateAdd
(可从MongoDBv5.0+获得)来计算存活日期并与$$NOW
进行比较Mongo Playground
dgsult0t2#
我认为
$expr
可以帮助您:编辑:使用与documentdb兼容的解决方案: