流星蒙戈收集触摸

时间:2015-08-31 07:12:59

标签: mongodb meteor meteor-collection2

我想知道我是否可以进行“触摸'对于Meteor中的mongo文档。

我正在使用aldeed:collection2包来验证数据库架构。最近添加了一些带有默认值的新字段,我现在需要在我的数据库上执行迁移。

我的计划是触摸所有文档,而不是为每个新字段编写单独的迁移,以便使用aldeed:simple-schema定义的defaultValue应用于文档。

有触摸操作吗?我该怎么办?

1 个答案:

答案 0 :(得分:0)

只需遍历集合中的每个文档validate(doc),然后进行更新。这有效地“触摸”了每个文档。性能不应该是您关注的问题,因为这是一次性迁移。步骤是:

  1. 使用SimpleSchema defaultValue验证文档,该文档会自动将collection.update(doc)应用于doc对象
  2. collection.find().forEach(function(doc) { MySchema.namedContext("myContext").validate(doc); collection.update({_id: doc._id}, doc); });
  3. 这是一个示例实现。

    int

    应该这样做!

    注意: 要利用SimpleSchema,您显然必须从Meteor上下文(而不是mongo)运行此代码,这在生产环境中可能很棘手。因此,如果根据您的实现,您可以将此迁移编写为从客户端调用的服务器端方法(一定要保护它),或者从Meteor shell调用此方法。