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