Mongoose - 查询具有默认值的新 属性 的集合,而无需重新保存每个元素
Mongoose - Querying a collection for a new property with a default value without having to resave every element
我们最近向我们的一个 Mongoose 模式添加了一个新的 属性,它定义了一个带有枚举验证器和默认值的字符串。我们现在需要使用 属性 查询文档,但在查询发生之前不会为预先存在的文档设置它。有没有办法解决这个问题,而不必重新保存此更改之前存在的那个集合中的每个文档,或者如果没有,是否有如何干净地做到这一点的最佳实践?
新的属性:
sales_category: {
type: String,
required: true,
enum: ["Prospect", "Subscriber", "Activated Trial", "Expired Subscriber", "Expired Free Trial"],
default: "Prospect"
}
查询:
Account.find({sales_category: "Prospect"}).populate("account_holder").exec(function(err, accounts) {
编辑:我刚刚发现 ,这似乎暗示没有干净的方法可以做到这一点,建议保持原样并反转 {sales_category 的任何查询: "Prospect"} 查询其他任何类别似乎都是最好的解决方案,前提是枚举永远不会改变。我不确定我们是否可以在这个用例中保证它,所以我想我最终可能会回到 "re-save everything" 解决方案,即使它感觉不太好。
如果有人有更好的解决方案,我暂时将其打开。
我们最近向我们的一个 Mongoose 模式添加了一个新的 属性,它定义了一个带有枚举验证器和默认值的字符串。我们现在需要使用 属性 查询文档,但在查询发生之前不会为预先存在的文档设置它。有没有办法解决这个问题,而不必重新保存此更改之前存在的那个集合中的每个文档,或者如果没有,是否有如何干净地做到这一点的最佳实践?
新的属性:
sales_category: {
type: String,
required: true,
enum: ["Prospect", "Subscriber", "Activated Trial", "Expired Subscriber", "Expired Free Trial"],
default: "Prospect"
}
查询:
Account.find({sales_category: "Prospect"}).populate("account_holder").exec(function(err, accounts) {
编辑:我刚刚发现 ,这似乎暗示没有干净的方法可以做到这一点,建议保持原样并反转 {sales_category 的任何查询: "Prospect"} 查询其他任何类别似乎都是最好的解决方案,前提是枚举永远不会改变。我不确定我们是否可以在这个用例中保证它,所以我想我最终可能会回到 "re-save everything" 解决方案,即使它感觉不太好。
如果有人有更好的解决方案,我暂时将其打开。