原来使用 mysql+active record,capistrano 部署时轻轻松松搞定 migration。现在尝试 mongodb 了,不知道还是像原来一样生成 migration 文件,用 capistrano 部署时进行 migration 么?大家的 mongodb migration 都怎么做的?
谢谢@ailen @pynix @neverlandxy_naix的回复,怪我没有说清楚,我的问题应该是在系统已经上线的情况下,如何处理对已有 collection 中字段的更改问题?因为增删列很简单,修改现有列比较麻烦。还有就是运行 migration 修改数据的时机,之前都是由 capistrano 自己控制的,我只是简单调用 deploy:migrations 而已。
@6233843 我的做法是写专门的 migrate 脚本对数据进行升级。注意当单 collection 超过 100M 时,应该使用原生的 mongodb api 操作,这样效率更快一点。我是 dump 本地一份,写完测试可用性,然后在到 stage,prod 环境。
例子:
https://github.com/onepiecejs/nodejs-cantas/blob/master/scripts/db_migration_card_add_boardId.js
汗 用 Mongodb 为的不就是不用写 Migration 和担心 schema 吗?
另外接口定义实在 model 里面写的,你哪个 Model 的哪个字段改名字里在这里改,这是 mongoid 的,你用其他的可以去看说明
@6233843 把网站跳到维护状态,然后把线上 DB 下线,然后更新,测试通过后然后上线。不停机的更新有其他办法,你需要 Google 一下,这里不在赘述。