【问题标题】:mongo efficient remove data from big collectionmongo 高效地从大集合中删除数据
【发布时间】:2012-04-30 15:07:12
【问题描述】:

我收集了数百万个条目。我想有效地删除所有数据,但不删除集合。

最好的方法是什么?

db.some_coll.remove({})

需要很多时间!!!

【问题讨论】:

    标签: performance mongodb mongodb-query


    【解决方案1】:

    最好的方法是什么?

    你已经找到了。清除集合只有两种方法:

    1. db.some_coll.remove({}):一次删除所有内容。这需要很长时间,因为每次删除都与插入一样昂贵。
    2. db.some_coll.drop():简单地清除整个集合。

    我想有效地删除所有数据,但不删除集合。

    为什么不放弃收藏?您想要删除所有数据,您需要做的就是重新创建索引以及可能的集合上的设置(仅限上限集合)。

    重新创建索引非常简单。 那么问题是什么

    【讨论】:

    • 我也有分片。如果我使用 drop 我必须将其重新配置为共享集合。我怎样才能对应用程序透明地做到这一点?
    • 对集合进行分片类似于重新创建索引,除了您将丢失配置数据库中与您的块相关的数据。您必须定义“对应用程序透明”?您正在删除一堆数据,应用程序会注意到。
    • 当然可以。我的业务逻辑是删除数据并插入新数据。我知道有一段时间数据并非始终完整。但我希望共享配置对我的应用服务器透明
    • 等一下,您的业务逻辑正在删除所有数据?您的意思是,您打算定期从分片集合中删除所有数据?
    • 如果我每次都将所有数据作为输入,我可以通过两种方式处理它:使用 upsert 更新每个文档的数据或使用批量插入重新创建数据。我认为第二个效率更高不是吗?
    猜你喜欢
    • 2011-06-17
    • 2013-12-11
    • 2021-06-26
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多