首页 > 解决方案 > 如何使用 mongoose 和 mongodb 添加必填字段?

问题描述

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

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

但我想在此模式中添加另一个field2类型Boolean为 的字段并使其成为必需。我还希望所有现有文档的field2值都设置为false. 如何使用节点服务器和猫鼬来做到这一点?

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

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

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

标签: node.jsmongodbmongoose

解决方案


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

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


推荐阅读