将新的 mongoose 中间件前置条件应用于集合中所有已存在的元素

Apply a new mongoose middleware pre-condition to all already existing elements in a collection

在 mongoose 中,我只是向现有模型添加了一个前提条件。这个条件基本上连接对象中所有元素的值,创建一个散列并将其存储为同一对象中的另一个字段。 这段代码将在我从现在开始保存的所有元素上执行,但我想知道是否也可以对所有现有元素执行它,或者我是否必须编写一个脚本来更新它们。

您数据库中的记录不会神奇地更新,第一次您必须手动更新它们。

如果您的新中间件与更新一起工作,您可以找到所有记录并保存它们。将使用中间件并填充新字段。

类似于:

Model.find({}, function(err, records) {
    records.forEach(function(record) {
        record.save(function(err) { console.log(err); });
    });
}

但是,如果您的数据库很大,这会很慢。这种情况下直接更新数据库会更好