首页 > 解决方案 > MongoDb将日期时间戳转换为集合中的日期

问题描述

我收藏的日期很少

"workedDate" : ISODate("2020-07-02T08:16:59Z"),
"workedDate" : ISODate("2020-07-01T14:00:00Z"),
"workedDate" : ISODate("2020-06-30T16:00:00Z"),
"workedDate" : ISODate("2020-06-29T14:00:00Z"),
"workedDate" : ISODate("2020-07-01T23:43:32Z"),

我需要删除时间戳,如"workedDate" : "2020-07-02" 或这样的"workedDate" : ISODate("2020-07-02T00:00:00Z")

需要这样的结果。

"workedDate" : ISODate("2020-07-02T00:00:00Z"),
"workedDate" : ISODate("2020-07-01T00:00:00Z"),
"workedDate" : ISODate("2020-06-30T00:00:00Z"),
"workedDate" : ISODate("2020-06-29T00:00:00Z"),
"workedDate" : ISODate("2020-07-01T00:00:00Z"),

任何可用的更新查询

标签: mongodbmongoosemongodb-query

解决方案


我认为下面的脚本是你正在寻找的

var count = 0;
db.<Collection-Name>.aggregate([
    {
        "$project": {
            "_id": 1,
            "workedDate": 1,
        }
    },
    {
        "$addFields": {
            "DateinString": {
                "$toDate": {
                    "$dateToString": {
                        "format": "%Y-%m-%d",
                        "date": "$workedDate"
                    }
                }
            }
        }
  }
]).forEach (function(it) {
    db.<Collection-Name>.updateOne({
        "_id": it["_id"]
    }, {
        "$set": {
            "workedDate": it["DateinString"]
        }
    });
    printjson(++count);
})
printjson("DONE!!!")

推荐阅读