【问题标题】:How do I drop a MongoDB collection from the command line?如何从命令行删除 MongoDB 集合?
【发布时间】:2017-04-15 21:13:06
【问题描述】:

从我的 bash 提示符中执行此操作的最简单方法是什么?

我知道我可以使用以下方法删除数据库:

mongo <dbname> --eval "db.dropDatabase()"

我想对集合做同样的事情,最好是在 shell 脚本或 python 脚本中,而不是从 mongodb 控制台。

我想要实现的是首先获取集合的mongodump,然后获取集合的drop

我用于转储的命令:

mongodump --db database --collection collection_03-11-2016 --out /home/mongodump

【问题讨论】:

    标签: python bash mongodb


    【解决方案1】:

    您可以编写一个包含多个命令的 javascript 文件,并将其交给 mongo 命令执行。

    假设您创建了一个名为delete_collection.jsjs 文件,如下所示:

    use foo        //DB name - foo
    db.bar.drop()  //Collection drop (collection name - bar)
    

    然后,您可以从 bash/终端运行以下命令来执行它。

    $ mongo < delete_collection.js
    Mongo shell version: 3.0.4
    Connecting to: test
    switched to db foo
    true
    bye
    $
    

    【讨论】:

      【解决方案2】:

      如果您想在 bash 一个班轮中执行此操作。最简单的是-

      mongodump --db yourdatabase --collection yourcollection --out /home/mongodump && mongo --eval "db=db.getSiblingDB('yourdatabase'); db.yourcollection.drop();"
      

      【讨论】:

      • 是的,'&&'只有左边的命令成功才会执行右边的命令。
      【解决方案3】:

      为了回答我自己的问题,我根据数据库中的日期收集了 mongo 集合,并且想要一个 shell 脚本来备份和删除超过 10 天的集合。

      使用 Abhay PS 的脚本,我编写了以下 .sh 脚本:

      #!/bin/bash
      
      MONGO_DATABASE="db_name"
      APP_NAME="collection_name_"
      
      MONGO_HOST="127.0.0.1"
      MONGO_PORT="27017"
      TIMESTAMP=`date +%F -d "10 days ago"`
      MONGODUMP_PATH="/usr/bin/mongodump"
      BACKUPS_DIR="/home/user/mongodump/$TIMESTAMP"
      BACKUP_NAME="$APP_NAME$TIMESTAMP"
      MONGO_PATH="/usr/bin/mongo"
      
      $MONGODUMP_PATH -d $MONGO_DATABASE -c $BACKUP_NAME
      
      mkdir -p $BACKUPS_DIR
      mv dump $BACKUP_NAME
      tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUP_NAME
      rm -rf $BACKUP_NAME
      
      $MONGO_PATH --eval "db=db.getSiblingDB('${MONGO_DATABASE}'); db['${BACKUP_NAME}'].drop();"
      

      也可以使用-o在mongodump选项中传递路径和zip参数

      【讨论】:

        【解决方案4】:

        在终端上试试这个命令。

        mongodump --db <dbname> --collection <collection> && mongo <dbname> --eval 'db.<collection>.drop()'
        

        【讨论】:

          【解决方案5】:

          你也可以使用 echo:

          echo "db.collection.drop()" | mongo <dbname>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-10
            • 1970-01-01
            • 1970-01-01
            • 2015-09-06
            • 2020-06-30
            • 2018-11-21
            • 2017-02-21
            相关资源
            最近更新 更多