2016-12-01 88 views
0

從我的bash提示符下執行此操作的最簡單方法是什麼?如何從命令行刪除MongoDB集合?

我知道我可以使用下面刪除數據庫:

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

我想做爲一個集合在同一最好在一個shell腳本或Python腳本,而不是從MongoDB的控制檯。

我所試圖實現的是先收集的mongodump然後drop集合:我使用轉儲

命令:

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

回答

2

如果你想這樣做在bash一個班輪。最簡單的將是 -

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

會下降發生的mongodump選項轉儲完成後? – Vaulstein

+1

是的,只有左側命令成功時,'&&'纔會執行右側的命令。 –

2

你可以寫多個javascript文件命令並將其提供給mongo命令執行。

比方說,你創建一個js文件名爲delete_collection.js如下:

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 
$ 
0

要回答我的問題,我根據在DB日期有蒙戈集合,想一個shell腳本備份和刪除收集超過10天以上。

使用阿沛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