将日期类型添加到已创建的文档中
Adding date type to the documents already created
我的猫鼬模式定义如下。
mongoose.Schema({
"url": String,
"translations": [
{
"targetLang": String,
"source": String,
"target": String
}
],
}, { versionKey: false });
我更新了我的架构以包含 createdAt
和 updatedAt
,新架构如下所示:
mongoose.Schema({
"url": String,
"translations": [
{
"targetLang": String,
"source": String,
"target": String,
"createdAt": { type: Date, default: Date.now },
"updatedAt": { type: Date, default: Date.now }
}
],
}, { versionKey: false });
因此,当创建新文档时,createdAt
和 updatedAt
会按预期自动填充。如何使用新密钥 createdAt
和 updatedAt
获取旧文档。有什么办法吗?
注意:我同意旧文件有当前或任何以前的日期。但我希望他们都有一个约会。
您需要手动更新它们,例如从 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 });
});
}
我的猫鼬模式定义如下。
mongoose.Schema({
"url": String,
"translations": [
{
"targetLang": String,
"source": String,
"target": String
}
],
}, { versionKey: false });
我更新了我的架构以包含 createdAt
和 updatedAt
,新架构如下所示:
mongoose.Schema({
"url": String,
"translations": [
{
"targetLang": String,
"source": String,
"target": String,
"createdAt": { type: Date, default: Date.now },
"updatedAt": { type: Date, default: Date.now }
}
],
}, { versionKey: false });
因此,当创建新文档时,createdAt
和 updatedAt
会按预期自动填充。如何使用新密钥 createdAt
和 updatedAt
获取旧文档。有什么办法吗?
注意:我同意旧文件有当前或任何以前的日期。但我希望他们都有一个约会。
您需要手动更新它们,例如从 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 });
});
}