我想知道我是否可以在 Meteor 中对 mongo 文档进行“触摸”等操作。
我正在使用aldeed:collection2
包来验证数据库模式。最近添加了一些具有默认值的新字段,我现在需要在我的数据库上执行迁移。
我的计划不是为每个新字段编写单独的迁移,而是接触所有文档,以便将使用定义的 defaultValuealdeed:simple-schema
应用于文档。
有触控操作吗?我该如何进行?
我想知道我是否可以在 Meteor 中对 mongo 文档进行“触摸”等操作。
我正在使用aldeed:collection2
包来验证数据库模式。最近添加了一些具有默认值的新字段,我现在需要在我的数据库上执行迁移。
我的计划不是为每个新字段编写单独的迁移,而是接触所有文档,以便将使用定义的 defaultValuealdeed:simple-schema
应用于文档。
有触控操作吗?我该如何进行?
只需遍历集合中的每个文档validate
,然后更新。这实际上是“触摸”每个文档。性能不应成为您关心的问题,因为这是一次性迁移。步骤是:
validate(doc)
它会自动将defaultValue
s 应用于文档对象collection.update(doc)
这是一个示例实现。
collection.find().forEach(function(doc) {
MySchema.namedContext("myContext").validate(doc);
collection.update({_id: doc._id}, doc);
});
应该这样做!
注意: 要利用 SimpleSchema,您显然必须从 Meteor 上下文(不是 mongo)运行此代码,这在生产环境中可能会很棘手。因此,您可以将此迁移编写为从客户端调用(确保对其进行保护)或从 Meteor shell 调用的服务器端方法,前提是根据您的实现,您有可用的方法。