如何从命令行中删除MongoDB集合?

时间:2016-12-01 09:42:06

标签: python bash mongodb

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

我知道我可以使用以下内容删除数据库:

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

我想对一个集合执行相同的操作,最好是在shell脚本或python脚本中,而不是从mongodb控制台。

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

我用于转储的命令:

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

5 个答案:

答案 0 :(得分:2)

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

我们假设您创建一个名为js的{​​{1}}文件,如下所示:

delete_collection.js

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

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

答案 1 :(得分:2)

如果你想用bash one liner做这个。最简单的是 -

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

答案 2 :(得分:0)

要回答我自己的问题,我根据数据库中的日期设置了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选项中传递path和zip参数

答案 3 :(得分:0)

只需在终端上尝试此命令即可。

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

答案 4 :(得分:0)

您也可以使用echo:

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