mongodb - 如何用 mongoose 完全替换 mongo 文档中的模式
问题描述
由于我不会进入的原因,我们需要能够更改文档所基于的架构,即 mongo 中存在的文档。
这是我遇到的问题。
我有两个模式,我们称它们为 SchemaOne 和 SchemaTwo 定义为:
const schemaOne = new mongoose.Schema({
FirstName: { type: String, required: true },
LastName: { type: String, required: true },
},
{ optimisticConcurrency: true, versionKey: 'versionKey'})
const schemaTwo = new mongoose.Schema({
BusinessName: { type: String, required: true },
BusinessId: { type: String, required: true }
},
{ optimisticConcurrency: true, versionKey: 'versionKey'})
基于 SchemaOne 的 mongodb 中已经存在一个文档。我需要能够用基于模式二的数据替换 mongo db 中存在的内容,因此不仅要替换字段数据,还要替换整个模式。所以如果我当前的数据是
{
"_id": "12345",
"FirstName": "John",
"LastName": "Doe",
}
新数据应变为:
{
"_id": "12345",
"BusinessName": "John Doe Plumbing",
"BusinessId": "PB1234"
}
注意相同的_Id,这不是新记录。我正在使用 document.save() 函数,因为我正在使用 mongoose 内置的并发功能。
关于我如何能够做到这一点的任何想法?
我尝试过 document.overwrite() 但由于该文档基于 SchemaOne,因此保存时出现错误。请记住,我需要使用 save() 而不是 Model statics,因为 Mongoose 并发逻辑不适用于那些无需使用中间件(只有一半工作)的情况。
欢迎任何提示
解决方案
推荐阅读
- javascript - 正则表达式删除 html 标记及其内容并从字符串中选择特定字符
- mysql - 如何从 MySQL 中的 Json 多维数组中提取值
- javascript - Jquery:如何从具有相同类名的多个 iframe 加载特定 iframe
- json - Laravel 使用 SQL LIKE 运算符过滤 JSON 数据
- math - 有没有办法找到使用哪种浮点运算
- reactjs - 从大量数据映射 React 组件时,如何显示加载状态?
- c# - 在 Net Core 上的自定义类模型中处理 HTTP 连接的更好方法是什么?
- python - 如何根据列表播放视频片段?
- google-sheets - 用 If 语句覆盖公式
- python - 如何从健康区域掩盖感染区域?