如何在MongoDB中对集合内所有文档的日期字段进行偏移调整?
MongoDB 4.4.3:批量偏移文档日期字段30天的方法
针对演示站点静态数据过期的问题,你可以通过MongoDB的批量更新命令,将指定日期字段(如dateCreated和expirationDate)统一向后偏移30天。以下是具体操作:
方法一:使用$dateAdd(推荐,4.4+支持)
$dateAdd是MongoDB 4.4新增的日期操作符,能直观地按天数偏移日期,无需手动计算毫秒数:
db.yourCollectionName.updateMany( // 匹配条件:空对象表示更新所有文档,可按需修改(比如只更新EXPIRING_SOON类型) {}, [ { $set: { dateCreated: { $dateAdd: { startDate: "$dateCreated", unit: "day", amount: 30 } }, expirationDate: { $dateAdd: { startDate: "$expirationDate", unit: "day", amount: 30 } } } } ] )
如果仅需更新特定类型文档,比如itemType为EXPIRING_SOON的,将匹配条件改为:
{ itemType: "EXPIRING_SOON" }
方法二:使用$add计算毫秒数
若习惯传统数值计算方式,可通过$add给日期加上30天对应的毫秒数(30×24×60×60×1000 = 2592000000):
db.yourCollectionName.updateMany( {}, [ { $set: { dateCreated: { $add: ["$dateCreated", 2592000000] }, expirationDate: { $add: ["$expirationDate", 2592000000] } } } ] )
验证更新结果
执行更新后,可查询单条文档确认日期偏移效果:
db.yourCollectionName.findOne({ _id: "62bda37a4d28f5df2e0ab07f" })
查看返回结果中的dateCreated和expirationDate,应比原日期晚30天。
内容的提问来源于stack exchange,提问作者Dylan
相关产品推荐
相关产品推荐

