首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >流星芒果收藏触摸

流星芒果收藏触摸
EN

Stack Overflow用户
提问于 2015-08-31 07:12:58
回答 1查看 95关注 0票数 1

我想知道我是否能为Meteor中的mongo文档做“触摸”这样的操作。

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

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

有触控手术吗?我该怎么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-03 17:29:32

只需迭代集合、validate和update中的每个文档即可。这实际上是“触摸”每个文档的-ing。性能不应该成为您关注的问题,因为这是一次性迁移。这些步骤是:

  1. 使用自动将SimpleSchema s应用于doc对象的SimpleSchema validate(doc)验证defaultValue
  2. collection.update(doc)

下面是一个实现示例。

代码语言:javascript
复制
collection.find().forEach(function(doc) {
  MySchema.namedContext("myContext").validate(doc);
  collection.update({_id: doc._id}, doc);
});

这样就行了!

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32305765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档