即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中
Posted
技术标签:
【中文标题】即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中【英文标题】:How to add new values into existing MongoDB database even when it's not specified in original model 【发布时间】:2020-12-19 00:49:36 【问题描述】:我有一个相当普通的数据库来存储您的平均数据,例如电子邮件和用户名。
我正在使用 Node.JS 和 Mongoose/MongoDB 创建这个数据库/后端。我想让它成为未来的证明。目前,我有一个用户模型,其中包含我认为我只需要的值,但是,我知道我必须稍后将值添加到用户的数据库中(模型中未指定) .
显然,由于已经使用模型创建了用户,我不想弄乱他们的数据。当用户发出请求时,我使用该模型通过他们的 ID 搜索用户,但是我只想在 JSON 文档中添加一个值和一些数据。要添加的数据可以在他们的 JSON 数据的根目录中,也可以在他们的 JSON 文档中的嵌套值中,所以我想知道如何做到这两点。
根据我的模型,我的数据结构如下:
user:
username: "",
email: "",
isVerified: "",
password: "",
hub:
isSetup: true,
swVersion: 0.0`
更新现有数据的代码(在下面的示例中,我将嵌套的 JSON - 'hub' 值 'isSetup' 更新为 true:
User.update(_id: req.user.id, $set: "hub.isSetup" : true)
.then((data) =>
return res.json(message: data);
)
.catch(err =>
// log.error(err);
return next(message: 'Error updating User.');
);
如何将数据(如上)添加到数据库的现有文档中,而不锁定用于搜索用户的模型,模型是“用户”.....使用:User.update(...)
我在我的测试和搜索谷歌中发现,我只能将数据添加到数据库中,只要模型指定它 - 我不想这样做。
谢谢
【问题讨论】:
【参考方案1】:您正在寻找的是严格模式选项。 https://mongoosejs.com/docs/guide.html#strict
如果你指定为false,你可以添加任何你喜欢的东西。
【讨论】:
在我的代码中哪里可以指定严格选项?当我在脚本中或模型本身中声明模型时?显然,它也是默认启用的,在我的测试中不是这样。 默认启用,因此您必须根据您的情况禁用它。在文档的链接中,您会看到一个具体的示例,该示例向您展示了放置它的位置。new Schema(.., strict: false )
以上是关于即使原始模型中未指定新值,如何将新值添加到现有 MongoDB 数据库中的主要内容,如果未能解决你的问题,请参考以下文章