我想知道我是否能为Meteor中的mongo文档做“触摸”这样的操作。
我正在使用aldeed:collection2包来验证数据库模式。在最近添加了一些带有默认值的新字段之后,我现在需要在我的数据库上执行迁移。
我的计划不是为每个新字段编写单独的迁移,而是触摸所有文档,以便将使用aldeed:simple-schema定义的aldeed:simple-schema应用于文档。
有触控手术吗?我该怎么做?
发布于 2015-09-03 17:29:32
只需迭代集合、validate和update中的每个文档即可。这实际上是“触摸”每个文档的-ing。性能不应该成为您关注的问题,因为这是一次性迁移。这些步骤是:
validate(doc)验证defaultValuecollection.update(doc)下面是一个实现示例。
collection.find().forEach(function(doc) {
MySchema.namedContext("myContext").validate(doc);
collection.update({_id: doc._id}, doc);
});这样就行了!
注意:为了利用SimpleSchema,您显然必须在Meteor上下文(而不是mongo)上运行这段代码,这在生产环境中是很棘手的。因此,您可以将此迁移编写为服务器端方法,如果基于您的实现,您可以从客户端(请确保保护它)或Meteor调用该方法。
https://stackoverflow.com/questions/32305765
复制相似问题