我有一个mongoose模式,应该是这样的:-。
var mSchema = new Schema({
name: { type: String, required: true}
});
我已经使用这个模式一年了,现在我想给它添加性别,就像这样:-。
var mSchema = new Schema({
name: { type: String, required: true},
gender: { type: String, default: 'Male' }
});
每当有更新请求时,我想让这个性别自动设置为默认的男性,但我发现默认值在更新请求时并没有设置。(注意:这只是一个例子,不是真实的情况。我只是想让mongoose在字段不存在或为空的情况下默认工作)
有什么方法可以让我在更新文档时设置默认值?
如果你使用的是一个函数,如 update()
那么,这并不是直接可能的,正如以下所言 这个 答案。不过,你还是可以简单地切换到一个类似于 findOne()
并使用 save()
,应该也是这样做的。
在更新文件时,你也可以查看一下。setDefaultsOnInsert
选项。https:/mongoosejs.comdocsdefaults.html#the-setdefaultsoninsert-option。
const options = {
// Create a document if one isn't found. Required
// for `setDefaultsOnInsert`
upsert: true,
setDefaultsOnInsert: true
};
await XY.findOneAndUpdate(query, update, options);