我已经尝试了很多次向现有的MongoDB文档添加新字段,但是我失败了。我尝试了下面的代码来完成这项工作,但是什么也没有发生。
这是用户模型。
const UserSchema = new mongoose.Schema(
{
name: {
type: String,
required: true,
},
email: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
},
},
{ timestamps: true }
);
下面是向文档添加新字段的代码。
const updateDocument = async () => {
const updatedUser = await User.findOneAndUpdate(
{ _id: "63eb30f466127f7a0f7a9b32" },
{
$set: { lastName: "syed" },
}
);
console.log(updatedUser);
};
updateDocument();
注1:lastName
字段在MongoDB文档和UserSchema
中不存在。我想将该字段添加到MongoDB文档中。
注2:当我更新文档内的现有字段时,相同的代码有效,但在添加新字段时无效。
2条答案
按热度按时间jm2pwxwz1#
您需要将
strict:false
作为选项传递给findOneAndUpdate
。据 Mongoose 医生说:
strict选项(默认情况下启用)确保传递给模型构造函数的值不会保存到数据库中,而这些值在模式中没有指定。
另一种方法是在定义架构时传递此参数:
hl0ma9xz2#
谢谢你,穆斯塔法,成功了。