我想通过命令导出MongoDB中的所有集合:

mongoexport -d dbname -o Mongo.json

结果是: 没有指定集合!

手册说,如果你不指定一个集合,所有的集合都将被导出。 然而,为什么这行不通呢?

http://docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection

我的MongoDB版本是2.0.6。


当前回答

可以使用mongodb命令进行修改

步骤1:打开命令提示符 第二步:打开mongoDB安装的bin文件夹(C:\Program Files\ mongoDB \Server\4.0\bin) 步骤3:然后执行以下命令 mongodb -d your_db_name -o destination_path Your_db_name = test destination_path = C:\Users\HP\Desktop

导出的文件将创建在destination_path\your_db_name文件夹中(在本例中是C:\Users\HP\Desktop\test)

参考资料:o7planning

其他回答

一些选项现在已弃用,在4.4.5版本中,我是这样做的

mongodump --archive="my-local-db" --db=my


mongorestore --archive="my-local-db" --nsFrom='my.*' --nsTo='mynew.*'

阅读更多关于恢复:https://docs.mongodb.com/database-tools/mongorestore/

#mongodump using sh script 
#!/bin/bash
TIMESTAMP=`date +%F-%H%M`
APP_NAME="folder_name"
BACKUPS_DIR="/xxxx/tst_file_bcup/$APP_NAME"
BACKUP_NAME="$APP_NAME-$TIMESTAMP"
/usr/bin/mongodump -h 127.0.0.1 -d <dbname> -o $BACKUPS_DIR/$APP_NAME/$BACKUP_NAME
tar -zcvf $BACKUPS_DIR/$BACKUP_NAME.tgz $BACKUPS_DIR/$APP_NAME/$BACKUP_NAME
rm -rf /home/wowza_analytics_bcup/wowza_analytics/wowza_analytics
### 7 days old backup delete automaticaly using given command

find /home/wowza_analytics_bcup/wowza_analytics/ -mindepth 1 -mtime +7 -delete

我意识到这是一个相当老的问题,如果你想要100%的忠实结果(包括索引),mongodb /mongorestore显然是正确的方法。

然而,我需要一个快速而简单的解决方案,它可能在MongoDB的新旧版本之间向前和向后兼容,前提是没有什么特别古怪的事情发生。为此我想知道最初问题的答案。

上面还有其他可接受的解决方案,但这个Unix管道相对较短:

mongo --quiet mydatabase --eval "db.getCollectionNames().join('\n')" | \
grep -v system.indexes | \
xargs -L 1 -I {} mongoexport -d mydatabase -c {} --out {}.json

这将为每个集合生成一个适当命名的.json文件。

注意,数据库名称(“mydatabase”)出现了两次。我假设数据库是本地的,你不需要通过凭据,但这很容易做到与mongo和mongoexport。

注意,我使用grep -v来丢弃系统。索引,因为我不希望旧版本的MongoDB试图解释来自新版本的系统集合。相反,我允许我的应用程序执行它通常的ensureIndex调用来重新创建索引。

我需要Windows批处理脚本版本。这个帖子很有用,所以我想我也会把我的答案贡献给它。

mongo "{YOUR SERVER}/{YOUR DATABASE}" --eval "rs.slaveOk();db.getCollectionNames()" --quiet>__collections.txt
for /f %%a in ('type __collections.txt') do @set COLLECTIONS=%%a
for %%a in (%COLLECTIONS%) do mongoexport --host {YOUR SERVER} --db {YOUR DATABASE} --collection %%a --out data\%%a.json
del __collections.txt

我在使用set /p COLLECTIONS=<__collections.txt时有一些问题,因此使用了复杂的for /f方法。

如果你有这样的问题: Failed:不能创建会话:不能连接到服务器:connection(): auth error: sasl conversation error: unable to authenticate using mechanism " sran - sha -1": (AuthenticationFailed)认证失败。

然后添加——authenticationDatabase admin

eg:

mongodb -h 192.168.20.30:27018——authenticationDatabase admin -u dbAdmin -p dbPassword -d dbName -o path/to/folder