如何从命令行删除 MongoDB 集合?
Posted
技术标签:
【中文标题】如何从命令行删除 MongoDB 集合?【英文标题】:How do I drop a MongoDB collection from the command line? 【发布时间】: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
【问题讨论】:
【参考方案1】:您可以编写一个包含多个命令的 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
$
【讨论】:
【参考方案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>
【讨论】:
以上是关于如何从命令行删除 MongoDB 集合?的主要内容,如果未能解决你的问题,请参考以下文章