在已创建的文档中添加日期类型

问题描述

我的猫鼬模式定义如下。

Activate()

我更新了架构,将mongoose.Schema({ "url": String,"translations": [ { "targetLang": String,"source": String,"target": String } ],},{ versionKey: false }); createdAt包括在内,新架构如下:

updatedAt

因此,在创建新文档时,将按预期自动填充mongoose.Schema({ "url": String,"target": String,"createdAt": { type: Date,default: Date.now },"updatedAt": { type: Date,default: Date.now } } ],{ versionKey: false }); createdAt。如何使用新密钥updatedAtcreatedAt获取旧文档。有什么办法吗?

注意:我同意旧文档使用当前日期或以前的日期。但是我希望他们所有人都有个约会。

解决方法

您需要手动更新它们,例如从mongoshell:

{
    const toUpdate = db.getCollection('collection').find({
        $or: [
            { 'translations.createdAt': null },{ 'translations.updatedAt': null }
        ]
    });

    toUpdate.forEach(doc => {
        const timestamp = doc._id.getTimestamp();
        doc.translations.createdAt = timestamp;
        doc.translations.updatedAt = timestamp;
        
        db.getCollection('collection').updateOne({ _id: doc._id },{ $set: doc });
    });
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...