说金钱是罪恶,都在捞;说美女是祸水,都想要;说高处不胜寒,都在爬;说烟酒伤身体,都不戒;说天堂最美好,都不去!
原因
公司业务有要将一个集合需要更改名称,需要DBA做配合
操作流程
- 停止入库
- 确认已经把库入数据审完
- 重命名collections
- 创建新集合索引
db.antispam_resource.renameCollection("antispam_resource_20190415");
db.createCollection("antispam_resource");
db.antispam_resource.ensureIndex({createTs: 1, groupId: 1});
db.antispam_resource.ensureIndex({handleTs: 1, opUserId: 1});
db.antispam_resource.getIndexes();
- 新数据入库
- 看审核后台是否有新数据入库并审核
- 把最近1个月数据(antispam_resource_20190415)导入到antispam_resource
- 完毕
操作
查看一下原集合数据量
1 | db.antispam_resource.find().count(); |
进行更改名称操作
1 | db.antispam_resource.renameCollection("antispam_resource_20190415") |
进行创建索引
1 | db.antispam_resource.ensureIndex({createTs: 1, groupId: 1}); |
进行操作 MongoDB 版本的 INSERT INTO SELECT
1 | 示例: |
操作详细步骤
查看原集合大于4月1号的数据
1 | mgset-11469021:PRIMARY> db.antispam_resource_20190415.find({createTs: { $gte: NumberLong(1554048000) }}).count() |
进行操作
1 | mgset-11469021:PRIMARY> var docs = db.antispam_resource_20190415.find({createTs: { $gte: NumberLong(1554048000) }}); |
数据在慢慢插入到新的集合中
1 | mgset-11469021:PRIMARY> db.antispam_resource_20190415.find({createTs: { $gte:1554048000, $lte:1555311600}}).count() |
终于导完