假设我有一个现有的架构:
var OrderSchema = new Schema({
field1: {type: String, required; true},
})
但是我想向该架构添加类型为field2
的另一个字段Boolean
,并将其设为必需。我还希望所有现有文档的field2
值都设置为false
。使用节点服务器和猫鼬如何做到这一点?
我在想,我可能能够拥有一个预启动脚本,该脚本会将所有现有文档的field2
设置为false,这样所有现有文档都将具有该字段,并且需要任何新文档来在保存时设置了field2
,因为在服务器启动时架构已经更新。这种东西有标准做法吗?
我不是在问如何在猫鼬模式中创建默认字段。我问的是如何确保以前的文档具有默认字段和必填字段,以及人们通常如何在集合中填充以前的文档。请不要将其标记为重复项。
@Fanpark,这些问题都无法回答我的问题。请删除它们。
答案 0 :(得分:0)
var OrderSchema = new Schema({
field1: {type: String, required: true},
field2: {
type: Boolean,
default: false,
required: true
}
})
这将在使用.save创建对象时将field2添加为false,但不会修改旧文档。另一方面,.find方法将添加不存在的字段并将其设置为false(仅在查询结果中,不会更新文档)