如何使用mongoose和mongodb添加必填字段?

时间:2019-05-26 00:07:49

标签: node.js mongodb mongoose

假设我有一个现有的架构:

var OrderSchema = new Schema({
    field1: {type: String, required; true},
})

但是我想向该架构添加类型为field2的另一个字段Boolean,并将其设为必需。我还希望所有现有文档的field2值都设置为false。使用节点服务器和猫鼬如何做到这一点?

我在想,我可能能够拥有一个预启动脚本,该脚本会将所有现有文档的field2设置为false,这样所有现有文档都将具有该字段,并且需要任何新文档来在保存时设置了field2,因为在服务器启动时架构已经更新。这种东西有标准做法吗?

我不是在问如何在猫鼬模式中创建默认字段。我问的是如何确保以前的文档具有默认字段和必填字段,以及人们通常如何在集合中填充以前的文档。请不要将其标记为重复项。

@Fanpark,这些问题都无法回答我的问题。请删除它们。

1 个答案:

答案 0 :(得分:0)

var OrderSchema = new Schema({
    field1: {type: String, required: true},
    field2: {
        type: Boolean,
        default: false,
        required: true
    }
})

这将在使用.save创建对象时将field2添加为false,但不会修改旧文档。另一方面,.find方法将添加不存在的字段并将其设置为false(仅在查询结果中,不会更新文档)