从文档中删除字段后,MongoDB 集合大小未更改
Posted
技术标签:
【中文标题】从文档中删除字段后,MongoDB 集合大小未更改【英文标题】:Mongo DB collection size not changed after removal of fields from document 【发布时间】:2016-06-07 20:33:45 【问题描述】:为了减少我现有的集合大小,我从集合的文档中删除了一些不需要的字段。在我运行收集统计信息以检查大小之后和之前,但它从未改变。 我错过了一些东西(比如更新任何东西)来反映我的统计数据中减少的大小,请给我建议。 我在我的本地 PC 上运行它,没有任何其他节点。 谢谢。
【问题讨论】:
2021-06:db.runCommand( compact: "collection-name" )
docs.mongodb.com/manual/reference/command/compact
【参考方案1】:
正如 Daniel F 在对该问题的评论中提到的,这在 mongo shell 中对我有用:
use your-database-name
db.runCommand( compact: "your-collection-name" )
【讨论】:
【参考方案2】:这是正确的行为。 mongo 释放磁盘空间的唯一时间是您删除数据库或进行修复时。 (see here)
更漂亮的解释here
基本上,mongodb 会保留它分配的所有空间,除非并且直到您删除数据库或进行修复。这样做是因为添加空间效率不高,非常耗时。因此,一旦拥有它,它就会保留它并使用创建的空白空间,直到没有剩余空间,然后它会得到更多。
【讨论】:
如果您使用的是副本集,您实际上可以重置集合中的一个节点,它将从其他节点拉取启动同步中的所有数据。那时的数据足迹将比此后的任何时候都要小。然后您可以看到您的数据库实际需要的总空间。此外,这是一种回收空间的便捷方式,因为您可以一次同步一个节点以减少空间,而不会导致副本集脱机。以上是关于从文档中删除字段后,MongoDB 集合大小未更改的主要内容,如果未能解决你的问题,请参考以下文章