当前位置:  开发笔记 > 编程语言 > 正文

如何在不丢失数据的情况下调整mongodb上限集合的大小?

如何解决《如何在不丢失数据的情况下调整mongodb上限集合的大小?》经验,为你挑选了2个好方法。

如何在不丢失数据的情况下调整mongodb上限集合的大小?

是否有命令,或者有人提供脚本?



1> 小智..:

这就是我调整加盖的集合的大小:

db.runCommand({"convertToCapped": "log", size: 1000000000});

我已经有一个名为"log"的Capped Collection.所以我再次在它上面运行"convertToCapped",指定一个新的大小.我没有尝试过减小集合的大小.这可能是你需要使用Scott Hernandez版本的东西.但这适用于增加上限集合的大小而不会丢失任何数据或索引.


编辑: @JMichal是正确的.数据被保留,但索引不是并且需要重新创建.


适用于减少集合的大小!这应该是正确的答案.
http://docs.mongodb.org/manual/reference/command/convertToCapped/说:警告此命令获取全局写锁定,并将阻止其他操作,直到它完成.
但它不保留索引,所有都必须重新创建

2> Scott Hernan..:

您基本上需要创建一个新的上限集合并将文档复制到它.这可以在javascript(shell)或您选择的语言中轻松完成.

db.createCollection("new", {capped:true, size:1073741824}); /* size in bytes */
db.old.find().forEach(function (d) {db.new.insert(d)});
db.old.renameCollection("bak", true);
db.new.renameCollection("old", true);

注意:只需确保在切换时没有人插入/更新旧集合.如果在db.eval("....")中运行该代码,它将在运行时锁定服务器.

有一项功能要求可以增加现有馆藏的规模:http://jira.mongodb.org/browse/SERVER-1864

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有