mongoexport -d dbname -o Mongo.json
结果是:
未指定集合!
手册中说,如果您不指定集合,则所有集合都将被导出。 //docs.mongodb.org/manual/reference/mongoexport/#cmdoption-mongoexport--collection
我的MongoDB版本是2.0.6。
#1 楼
对于懒惰的人,请使用mongodump
,它更快:mongodump -d <database_name> -o <directory_backup>
并“恢复/导入”它(从directory_backup / dump /): >
mongorestore -d <database_name> <directory_backup>
这样,您无需单独处理所有集合。只需指定数据库即可。
请注意,我建议不要将
mongodump
/ mongorestore
用于大数据存储。这非常慢,一旦获得了超过10 / 20GB的数据,它可能需要数小时才能恢复。评论
JSON和BSON之间不存在兼容性问题吗?
– JuulienFr
2014年1月3日15:43
mongodump从2.2版或更高版本使用的数据格式与mongod的早期版本不兼容。不要使用最新版本的mongodump备份较旧的数据存储。
–n0nSmoker
2014年4月14日上午10:11
我相信restore命令是“ mongorestore -b DATABASE ./dump-folder”(其中./dump-folder是路径或导出的数据)。
– Thomas Decaux
2015年2月12日下午14:00
“ mongorestore -d数据库./dump-folder”
– kehers
15年3月13日在5:01
@LucaSteeb使用--excludeCollection = sessions
–吉姆
16 Mar 2 '16 at 17:56
#2 楼
我为此写了bash脚本。只需使用2个参数(数据库名称,目录来存储文件)运行它。#!/bin/bash
if [ ! ]; then
echo " Example of use: q4312078q database_name [dir_to_store]"
exit 1
fi
db=
out_dir=
if [ ! $out_dir ]; then
out_dir="./"
else
mkdir -p $out_dir
fi
tmp_file="fadlfhsdofheinwvw.js"
echo "print('_ ' + db.getCollectionNames())" > $tmp_file
cols=`mongo $db $tmp_file | grep '_' | awk '{print }' | tr ',' ' '`
for c in $cols
do
mongoexport -d $db -c $c -o "$out_dir/exp_${db}_${c}.json"
done
rm $tmp_file
评论
导入:用于* .json中的文件;做c = $ {file#* exp_yourdbname_}; c = $ {c%.json}; mongoimport --db yourdbname-集合“ $ {c}”-文件“ $ {file}”;完成
–布拉德福德
2015年2月5日14:25
我想使用批处理脚本导入.csv,您有什么主意吗?
–古拉斯再也(Prasanth Jaya)
15-10-27在12:34
#3 楼
请按照以下步骤从服务器创建mongodump并将其导入具有用户名和密码的另一台服务器/本地计算机1. mongodump -d dbname -o dumpname -u username -p password
2. scp -r user@remote:~/location/of/dumpname ./
3. mongorestore -d dbname dumpname/dbname/ -u username -p password
#4 楼
使用mongodump导出所有集合,请使用以下命令mongodump -d database_name -o directory_to_store_dumps
要恢复,请使用以下命令
mongorestore -d database_name directory_backup_where_mongodb_tobe_restored
评论
我做了mongodump -d mongo -o path \ to \ Desktop \ blog,但出现SyntaxError:missing;在CMD发表声明之前。 :(
–拉兹万·赞菲尔(Razvan Zamfir)
5月5日14:45
#5 楼
请让我们知道您在哪里安装了Mongo DB? (在Ubuntu或Windows中)对于Windows:
导出之前,您必须以cmd连接到Mongo DB提示并确保您能够连接到本地主机。
现在打开一个新的cmd提示符并执行以下命令,
mongodump --db数据库名--out保存路径
例如:mongodump --db mydb --out c:\ TEMP \ op.json
访问https://www.youtube.com/watch?v=hOCp3Jv6yKo了解更多详细信息。
对于Ubuntu:
登录到安装了Mongo DB的终端,并确保能够连接到您的终端Mongo DB。
现在打开一个新终端并执行以下命令,
mongodump -d数据库名称-o要保存的文件名
例如:mongodump -d mydb -o output.json
访问https://www.youtube.com/watch?v=5Fwd2ZB86gg了解更多详情。
#6 楼
先前的答案很好地说明了这一点,如果您正在处理受密码保护的远程数据库,我将添加我的答案以提供帮助评论
这也一样工作:mongodump --uri =“ mongodb:// YOUR_USER_ID:YOUR_PASSWORD @ YOUR_HOST_IP / YOUR_DB_NAME” --out / target / folder / path
–椰子
10月3日14:03
--authentication需要时数据库管理员
– DavutGürbüz
11月17日17:39
#7 楼
如果要连接像mongolab.com这样的远程mongoDB服务器,则应传递连接凭据。例如。
mongoexport -h id.mongolab.com:60599 -u username -p password -d mydb -c mycollection -o mybackup.json
评论
此解决方案是最好的,因为它可以正确回答原始问题。
– ttemple
16年8月12日在13:54
请注意,这不能可靠地保留所有丰富的BSON数据类型,因为JSON只能表示BSON支持的类型的子集。如MongoDB备份方法中所述,使用mongodump和mongorestore来实现这种功能。 (文档)
– Bernardo Dal Corno
18-11-16在3:33
#8 楼
您可以使用mongodump命令执行此操作步骤1:打开命令提示符
步骤2:转到mongoDB安装的bin文件夹(C:\ Program Files \ MongoDB \ Server \ 4.0 \ bin)
步骤3:然后执行以下命令
mongodump -d your_db_name -o destination_path
your_db_name = test
导出的文件将在destination_path \ your_db_name文件夹中创建(在此示例中为C:\ Users \ HP \ Desktop \ test)
参考文献:o7planning
#9 楼
如果您可以使用bson格式,则可以将mongodump实用程序与相同的-d标志一起使用。它将所有集合以bson格式转储到转储目录(默认值,可以通过-o选项更改)。然后,您可以使用mongorestore实用程序导入这些文件。#10 楼
您可以使用mongo --eval 'printjson(db.getCollectionNames())'
来获取集合列表,然后对所有集合进行mongoexport。
这是红宝石的一个例子
out = `mongo #{DB_HOST}/#{DB_NAME} --eval "printjson(db.getCollectionNames())"`
collections = out.scan(/\".+\"/).map { |s| s.gsub('"', '') }
collections.each do |collection|
system "mongoexport --db #{DB_NAME} --collection #{collection} --host '#{DB_HOST}' --out #{collection}_dump"
end
评论
很好,但是您可能希望out.scan正则表达式不贪心。 out.scan(/\".+?\"/)。map {| s | s.gsub('“',))}
– Casey
2013年12月6日23:38
#11 楼
我需要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
方法很复杂。 />#12 楼
在尝试了许多复杂的示例之后,我发现非常简单的方法对我有用。 />在本地计算机上:mongodump -d databasename
然后我将转储到我的服务器计算机上了: br />然后从转储的父目录中简单地:
scp -r dump user@xx.xxx.xxx.xxx:~
并导入了数据库。当然。
#13 楼
如果需要,可以将所有集合导出到csv而不指定--fields
(将导出所有字段)。从http://drzon.net/export-mongodb-collections-to-csv-without-指定字段/运行此bash脚本
OIFS=$IFS;
IFS=",";
# fill in your details here
dbname=DBNAME
user=USERNAME
pass=PASSWORD
host=HOSTNAME:PORT
# first get all collections in the database
collections=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();db.getCollectionNames();"`;
collections=`mongo $dbname --eval "rs.slaveOk();db.getCollectionNames();"`;
collectionArray=($collections);
# for each collection
for ((i=0; i<${#collectionArray[@]}; ++i));
do
echo 'exporting collection' ${collectionArray[$i]}
# get comma separated list of keys. do this by peeking into the first document in the collection and get his set of keys
keys=`mongo "$host/$dbname" -u $user -p $pass --eval "rs.slaveOk();var keys = []; for(var key in db.${collectionArray[$i]}.find().sort({_id: -1}).limit(1)[0]) { keys.push(key); }; keys;" --quiet`;
# now use mongoexport with the set of keys to export the collection to csv
mongoexport --host $host -u $user -p $pass -d $dbname -c ${collectionArray[$i]} --fields "$keys" --csv --out $dbname.${collectionArray[$i]}.csv;
done
IFS=$OIFS;
#14 楼
如果要转储所有数据库中的所有集合(这是对原始提问者意图的广泛解释),请使用mongodump
所有数据库和集合都将在当前位置中名为“ dump”的目录
评论
最好且简单的方法!!
–穆罕默德·伊姆兰(Mohamed Imran)
10月10日15:57
#15 楼
我意识到这是一个很老的问题,如果想要100%真实的结果(包括索引),mongodump / 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
都很容易做到这一点。不想让旧版本的MongoDB尝试从较新的版本中解释系统集合。相反,我允许我的应用程序执行其通常的grep -v
调用以重新创建索引。评论
感谢您回答提出的确切问题,这对我非常有帮助!
– Roger Heathcote
11月16日22:09
#16 楼
您可以使用以下命令创建zip文件。它将创建提供的数据库{dbname}的zip文件。您以后可以将以下zip文件导入mongo DB。Window filepath=C:\Users\Username\mongo
mongodump --archive={filepath}\+{filename}.gz --gzip --db {dbname}
评论
为了更加清晰,请使用以下信息docs.mongodb.com/manual/reference/program/mongodump
– kumar31rajesh
17年11月23日在10:39
#17 楼
在恢复导出的数据库时,这对我有用:mongorestore -d 0 ./0 --drop
其中./包含导出的bson文件。请注意,
--drop
将覆盖现有数据。#18 楼
如果您想使用mongoexport和mongoimport从数据库导出/导入每个集合,我认为该实用程序可能对您有所帮助。我已经使用过几次类似的实用程序;
#19 楼
如果要备份服务器上的所有数据库,而不必担心会调用这些数据库,请使用以下shell脚本:#!/bin/sh
md=`which mongodump`
pidof=`which pidof`
mdi=`$pidof mongod`
dir='/var/backup/mongo'
if [ ! -z "$mdi" ]
then
if [ ! -d "$dir" ]
then
mkdir -p $dir
fi
$md --out $dir >/dev/null 2>&1
fi
这使用mongodump实用程序,如果未指定任何数据库,它将备份所有数据库。
您可以将其放在cronjob中,并且仅在mongod进程正在运行时才运行。如果不存在备份目录,它还将创建备份目录。
每个数据库备份都写入一个单独的目录,因此您可以从全局转储中还原单个数据库。
#20 楼
首先,启动Mongo DB-为此,转到路径->C:\ Program Files \ MongoDB \ Server \ 3.2 \ bin并单击mongod.exe文件以启动MongoDB服务器Windows中要导出的命令
Windows中要从“远程服务器”将MongoDB数据库导出到目录C:/ Users /中的本地计算机的命令具有内部IP地址和端口的远程服务器上的桌面/临时文件夹。
C:> mongodump --host remote_ip_address:27017 --db -o C:/ Users / Desktop / temp-folder
Windows中的导入命令
从本地计算机目录C:/ Users / Desktop / temp-folder / db-dir导入Windows中的MongoDB数据库到“远程服务器”的命令
C:> mongorestore --host = ip --port = 27017 -d C:/ Users / Desktop / temp-folder / db-dir
#21 楼
#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
#22 楼
有多种选择,取决于您要执行的操作1)如果要将数据库导出到另一个mongo数据库,则应使用
mongodump
。这将创建一个BSON文件文件夹,该文件夹具有JSON不会包含的元数据。 mongodump
mongorestore --host mongodb1.example.net --port 37017 dump/
2)如果要将数据库导出为JSON,则可以使用
mongoexport
,只是必须一次收集一个(这是设计使然)。但是我认为最简单的方法是使用mongodump
导出整个数据库,然后转换为JSON。 # -d is a valid option for both mongorestore and mongodump
mongodump -d <DATABASE_NAME>
for file in dump/*/*.bson; do bsondump $file > $file.json; done
#23 楼
打开连接
启动服务器
打开新的命令提示符
导出:
mongo/bin> mongoexport -d webmitta -c domain -o domain-k.json
导入:
mongoimport -d dbname -c newCollecionname --file domain-k.json
webmitta(db name)
domain(Collection Name)
domain-k.json(output file name)
评论
它是mongoexport出口
–西里尔·杜尚-多丽丝(Cyril Duchon-Doris)
14-10-14在14:34
问题是关于导出所有集合。
– JJJ
2014年11月5日,11:46
#24 楼
对于转储,您的数据库遵循以下命令 mongodump -d <your d name> -o <dump path>
Ex:mongodump -d qualetics -o D:\dbpackup\qualetics
#25 楼
即使在mongo版本4中,也无法一次导出所有集合。您可以使用以下命令从运行在端口27017上的本地MongoDB实例将指定的集合导出到指定的输出文件:。\ mongoexport.exe --db = xstaging --collection = products --out = c :/xstaging.products.json
#26 楼
我将所有集合转储到robo3t上。
我在vagrant / homestead上运行以下命令。对我有用
mongodump --host localhost --port 27017 --db db_name --out db_path
#27 楼
如果您正在处理远程数据库,则可以在不考虑输出为BSON1的情况下尝试使用以下命令。转储为gzip存档
mongodump --uri="mongodb://YOUR_USER_ID:YOUR_PASSWORD@YOUR_HOST_IP/YOUR_DB_NAME" --gzip --archive > YOUR_FILE_NAME
2。还原(将数据库从一个复制到另一个)
mongorestore --uri="mongodb://$targetUser:$targetPwd@$targetHost/$targetDb" --nsFrom="$sourceDb.*" --nsTo="$targetDb.*" --gzip --archive
#28 楼
要以JSON格式导出,请通过以下命令进行操作。mongoexport --db dbname --collection collectionName --out directoryPATH/JSONfileName.json
评论
您正在使用哪个版本的MongoDB? mongoexport的Wiki文档建议这是用于导出集合的命令行工具。也许导出多个集合的功能是针对较新的版本?如果要备份数据库中的所有集合,mongodump会将所有集合导出到BSON。似乎尚未计划对所有集合使用mongoexport的选项是尚未计划的计划功能:SERVER-201 ..因此mongodump当前是导出完整数据库的最佳选择。使用其中一个MongoDB客户端驱动程序编写等效于mongoexport的操作并不难。
您应将答案标记为已接受。我的投票是对stackoverflow.com/a/16605781/1686575
作为记录,MongoDB文档指出避免对完整实例生产备份使用mongoimport和mongoexport。它们不能可靠地保留所有丰富的BSON数据类型,因为JSON只能表示BSON支持的类型的子集。如MongoDB备份方法中所述,使用mongodump和mongorestore来实现这种功能。因此,这不仅适用于Mentor Reka所说的懒惰人,而且也是这样做的首选方法。