【问题标题】:How to delete selected multiple records in a collection in MongoDB using MongoDB compass如何使用 MongoDB 指南针删除 MongoDB 集合中选定的多条记录
【发布时间】:2018-10-31 02:48:09
【问题描述】:

我对 MongoDB 和 MongoDB Compass 非常陌生。

我的客户集合中有大约 1000 条记录。 如何通过 MongoDB 指南针一次删除所有记录。

非常感谢,

【问题讨论】:

  • 删除收藏对你有用吗?

标签: mongodb mongodb-compass


【解决方案1】:

您可以使用 MongoDB 指南针提供的 Embedded Shell。它现在处于测试模式。我正在使用指南针版本 1.23.0

要删除多条记录,可以使用db.<collectionname>.deleteMany
https://docs.mongodb.com/manual/reference/method/db.collection.deleteMany/

【讨论】:

    【解决方案2】:

    如果您在该集合上没有索引,您可以删除整个集合,如 docs 所示。

    但是,如果您有索引,删除集合也会删除索引,但通常删除整个内容然后重新创建集合和索引比使用 remove 删除所有文档要快得多(db.collection.remove({}) ),因为这将不得不逐个文档地释放它们占用的空间并删除它们在索引上的条目(如果有的话)。

    这种方法的唯一警告是,在分片集群中,您可能会删除一个集合,即使报告删除成功,该集合仍可能存在于某些节点中,从而在重新创建它时导致问题。

    您可以在https://jira.mongodb.org/browse/SERVER-17397 阅读更多关于这个OPEN 问题及其解决方法的信息:

    问题摘要

    在分片集群中删除数据库/集合时,即使报告删除成功,数据库/集合仍可能存在于集群中的某些节点中。目前,我们不建议用户删除数据库或集合,然后尝试重用命名空间。

    用户影响

    当数据库/集合未成功删除到给定节点时,相应的文件将继续使用该节点中的磁盘空间。尝试重用命名空间可能会导致未定义的行为。

    解决方法

    要解决此问题,可以按照以下步骤在分片环境中删除数据库/集合:

    1. 使用mongos 删除数据库/集合。
    2. 连接到每个分片的主分片并验证命名空间已被删除。如果还没有,请放弃。删除数据库(例如 db.dropDatabase())会删除磁盘上正在删除的数据库的数据文件。
    3. 连接到mongos,切换到config 数据库并从集合chunkslocksdatabasescollections 中删除对已删除命名空间的任何引用:

      删除数据库时:

      使用配置 db.collections.remove( { _id: /^DATABASE\./ } ) db.databases.remove( { _id: "DATABASE" } ) db.chunks.remove( { ns: /^DATABASE\./ } ) db.locks.remove( { _id: /^DATABASE\./ } )

      删除集合时:

      使用配置 db.collections.remove( { _id: "DATABASE.COLLECTION" } ) db.chunks.remove({ ns: "DATABASE.COLLECTION" } ) db.locks.remove( { _id: "DATABASE.COLLECTION" } )
    4. 连接到每个mongos 并运行flushRouterConfig

    【讨论】:

    • 这个答案是否与删除 MongoDB Compass 中的记录有关?因为这就是OP想要的。如何在 MongoDB Compass 中应用 db.collection.remove({})?
    • 是的,如果您查看first link,它会提到如何使用 MongoDB Compass 删除整个集合。我提到了在分片集群上删除集合的问题,因为在这种情况下,最好使用其他方法或使用 shell 的解决方法,因为除了手动删除之外,没有办法在 MongoDB Compass 上执行 db.collection.remove({})逐个文档,这在大集合上是不可行的。
    猜你喜欢
    • 2018-03-04
    • 2021-01-13
    • 2022-06-19
    • 2018-01-27
    • 2020-06-21
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多