【问题标题】:Mongo DB collection size not changed after removal of fields from document从文档中删除字段后,MongoDB 集合大小未更改
【发布时间】:2016-06-07 20:33:45
【问题描述】:

为了减少我现有的集合大小,我从集合的文档中删除了一些不需要的字段。在我运行收集统计信息以检查大小之后和之前,但它从未改变。 我错过了一些东西(比如更新任何东西)来反映我的统计数据中减少的大小,请给我建议。 我在我的本地 PC 上运行它,没有任何其他节点。 谢谢。

【问题讨论】:

标签: mongodb mongoose mongodb-query


【解决方案1】:

正如 Daniel F 在对该问题的评论中提到的,这在 mongo shell 中对我有用:

use your-database-name
db.runCommand({ compact: "your-collection-name" })

【讨论】:

    【解决方案2】:

    这是正确的行为。 mongo 释放磁盘空间的唯一时间是您删除数据库或进行修复时。 (see here)

    更漂亮的解释here

    基本上,mongodb 会保留它分配的所有空间,除非并且直到您删除数据库或进行修复。这样做是因为添加空间效率不高,非常耗时。因此,一旦拥有它,它就会保留它并使用创建的空白空间,直到没有剩余空间,然后它会得到更多。

    【讨论】:

    • 如果您使用的是副本集,您实际上可以重置集合中的一个节点,它将从其他节点拉取启动同步中的所有数据。那时的数据足迹将比此后的任何时候都要小。然后您可以看到您的数据库实际需要的总空间。此外,这是一种回收空间的便捷方式,因为您可以一次同步一个节点以减少空间,而不会导致副本集脱机。
    猜你喜欢
    • 1970-01-01
    • 2020-11-21
    • 2012-05-13
    • 2018-03-24
    • 2013-08-23
    • 2021-09-11
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多