📅  最后修改于: 2023-12-03 15:34:02.455000             🧑  作者: Mango
mongodump
是MongoDB自带的命令行工具,用于将MongoDB中的数据导出为BSON文件。而Python提供了subprocess
模块,可以让我们在Python中调用系统命令。
本文将介绍如何在Python中使用subprocess
模块调用mongodump
命令,导出MongoDB中的数据。
在执行之前,请确保已经安装好MongoDB和Python。另外,需要安装pymongo模块。可以使用以下命令安装:
$ pip install pymongo
这里我们以导出数据库mydb
中的集合mycoll
为例。
import subprocess
# 连接MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 获取数据库和集合对象
mydb = client["mydb"]
mycoll = mydb["mycoll"]
# 导出数据
subprocess.call(["mongodump", "--db", "mydb", "--collection", "mycoll"])
执行后,会在当前目录下生成一个新的文件夹,包含一个BSON文件和一个元数据文件。具体的导出路径可以使用--out
参数指定。
如果需要在Python中使用导出的数据,可以使用bson
模块将BSON文件转换为Python对象,然后导入到MongoDB中。
import pymongo
import bson
# 连接MongoDB
client = pymongo.MongoClient("mongodb://localhost:27017/")
# 获取数据库和集合对象
mydb = client["mydb"]
mycoll = mydb["mycoll"]
# 从BSON文件中导入数据
with open("mydb/mycoll.bson", "rb") as f:
data = bson.decode_all(f.read())
# 插入到MongoDB中
mycoll.insert_many(data)
使用mongodump
命令可以方便地将MongoDB中的数据导出为BSON文件。而Python的subprocess
模块可以让我们在Python中调用系统命令,实现自动化导出和导入操作。