【问题标题】:Deleting stuff from multiple collection at once一次从多个集合中删除内容
【发布时间】:2012-03-06 06:16:27
【问题描述】:

有没有办法从多个集合中删除对象?喜欢在 MongoDB 中删除这 5 个集合命令中的所有内容?

从 Mongo 数据库中的每个集合中手动删除是相当耗时的。

【问题讨论】:

    标签: mongodb


    【解决方案1】:

    正如 Andrew 所提到的,没有内置的方法可以做到这一点,但您可以使用 Javascript 来获得您想要的。例如,如果我想快速删除一个数据库列表(这只是一个概念验证代码示例!):

    var deletelist = ["deleteme1", "deleteme2", "deleteme3"]
    deletelist.forEach(
        function deletedbs(name) {
            db = db.getMongo().getDB( name );
            db.dropDatabase();
            print(name + " deleted");
        }
    )
    

    当然没有错误检查,但是这种服务器端脚本适用于跨集合和跨数据库功能。如果你想在你所有的数据库上运行一些东西,那么你可以这样构建列表:

    var allDBs = db.getMongo().getDBNames()
    for(var name in allDBs){
          db = db.getMongo().getDB( name );
          db.<command to execute on each DB>;
     }
    

    当然,在运行这样的事情时你需要非常非常小心,以免破坏你的数据库,所以要进行广泛的测试并明智地使用:)

    有关服务器端 JS 的更多信息,请在此处查看 MongoDB 文档:

    http://www.mongodb.org/display/DOCS/Server-side+Code+Execution

    【讨论】:

      【解决方案2】:

      实际上没有,您只需要手动从每个集合中删除所有项目:

      db.foo1.remove({})
      db.foo2.remove({})
      

      另外,如果你关心性能,你可以完全放弃收集,它应该更快:

      db.foo1.drop()
      db.foo2.drop()
      

      另一种方式,如果您需要经常删除这五个集合,请将它们分组到一个数据库下并删除整个数据库:

      use dbWithFiveCollections
      db.dropDatabase()
      

      【讨论】:

        猜你喜欢
        • 2013-05-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-22
        • 2019-10-25
        • 2011-05-27
        • 1970-01-01
        • 1970-01-01
        • 2017-04-11
        相关资源
        最近更新 更多