1

我想知道我是否可以在 Meteor 中对 mongo 文档进行“触摸”等操作。

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

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

有触控操作吗?我该如何进行?

4

1 回答 1

0

只需遍历集合中的每个文档validate,然后更新。这实际上是“触摸”每个文档。性能不应成为您关心的问题,因为这是一次性迁移。步骤是:

  1. 使用 SimpleSchema 验证文档,validate(doc)它会自动将defaultValues 应用于文档对象
  2. collection.update(doc)

这是一个示例实现。

collection.find().forEach(function(doc) {
  MySchema.namedContext("myContext").validate(doc);
  collection.update({_id: doc._id}, doc);
});

应该这样做!


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

于 2015-09-03T17:29:32.583 回答