有没有更简单的方法来更新MongoDb中不同格式(字符串)的所有日期?

s4chpxco  于 2023-04-29  发布在  Go
关注(0)|答案(1)|浏览(90)

我有一个日期字段,它有不同格式的值,有时是"dd-mm-yyyy",有时是"yyyy-mm-ddTHH:MM:S.fZ",有时是日期类型。
我想把它们都做成日期格式。
到目前为止,我已经尝试过:
1.匹配字符串和非字符串类型(使用$facet)并合并它们。- facet工作内存耗尽。
1.运行for each循环,过滤id并更新新的日期。
`db.collection.function(doc){footswitch()}push({“updateOne”:{“filter”:{"_id”:doc._id},“更新”:{"$set”:{“myDate”:新日期(doc.myDate)}}} })

if (bulkUpdateOps.length === 1000) {
    db.collection.bulkWrite(bulkUpdateOps)
    bulkUpdateOps=[]
}

})`
这也是死亡后处理约20-30%的记录。我在这收藏了几百万张唱片。

tl:dr-希望将mongodb集合中的所有字符串日期转换为日期类型,其中包含数百条记录。

实现这一目标的最有效方法是什么?
非常感谢您的帮助。

sr4lhrrt

sr4lhrrt1#

试试这样:

db.collection.updateMany(
   { myDate: { $type: "string" } }, 
   [
      { $set: { myDate: { $toDate: "$myDate" } } }
   ]
)

相关问题