2016-12-01 12 views
0

私のbashプロンプトからこれを行う最も簡単な方法は何ですか?MongoDBコレクションをコマンドラインから削除するにはどうすればよいですか?

私は以下を使用してデータベースをドロップすることができることを知っている:

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

私はシェルスクリプトまたはPythonスクリプトではなくMongoDBのコンソールから、好ましくは、コレクションのために同じことをやりたいです。

コレクション私は最初のコレクションのmongodump、その後dropを取るされて達成しようとしています:私はダンプのために使用しています

コマンド:

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

答えて

2

これをbash oneライナーで実行したい場合は、最も簡単なのだろう -

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

を使用してmongodumpオプションでパスとジップパラメータを渡すことができます? – Vaulstein

+1

はい、 '&&'は、左側のコマンドが成功した場合にのみ、右側のコマンドを実行します。 –

2

あなたが複数でのJavaScriptファイルを書き込むことができますコマンドを実行し、それをmongoコマンドに渡して実行します。

次のようにあなたがdelete_collection.jsと呼ばれる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内の日付に応じMongoのコレクションを持っていたし、バックアップにシェルスクリプトを望んでいたし、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

関連する問題