如何共享MongoDB创建的数据库?

THI*_*ELP 0 python database mongodb pymongo

我们当前的Python管道从Web上擦除并将这些数据存储到MongoDB中.之后,我们将数据加载到分析算法中.这在本地计算机上运行良好,因为mongod找到数据库,但我想在Google Drive等共享平台上上传数据库,以便其他用户可以使用数据而无需再次运行刮刀.

我知道MongoDB默认将数据存储在/ data/db,所以我可以将整个/ data/db上传到Google Drive吗?

另一种选择似乎是将MongoDB导出为JSON或CSV,但我们当前的分析算法实现已经直接从MongoDB加载.

Raf*_*Raf 6

是的,您可以上传/data目录,这是备份数据库的一种方法.您还可以使用mongodump--gzipmongoexport作为你指出你自己.

如果您希望定期进行备份,则可以定期进行cp/rsync/ data目录.您还可以定期bash脚本mongodump/mongoresoremongoexport/mongoimport备份数据库,或者按照其他答案的建议使用mongolab.

所以你有三个选择,

  1. 使用mongodumpmongorestore
  2. 您可以通过复制/data目录的基础内容来创建备份(如果需要定期备份,则可以使用cp/rsync此目录)
  3. mongoexportmongoimport(在此之前阅读)

使用mongodump并恢复

在版本3.x中,您只需运行(使用默认端口转储默认的mongodb实例)

mongodump
Run Code Online (Sandbox Code Playgroud)

您需要指定早期版本 --dbPath

上面的mongodump命令创建一个转储目录,在该目录中,它将为mongodb中的每个数据库创建子目录.如果您希望转储特定集合(name = collection),那么以下内容将非常有用

mongodump  --db test --collection collection
Run Code Online (Sandbox Code Playgroud)

您可以使用--gzip和其他类似的命令行选项.有关详细信息和额外的命令行选项,请阅读此处.

您可以使用恢复转储的数据库mongorestore,命令如下

mongorestore --dir <path> 
Run Code Online (Sandbox Code Playgroud)

就像mongodump你可以指定一个主机名,端口号(如果分差),一个数据库名称等等等等看这里了解更多信息.

使用mongoexport和mongoimport

允许以JSON或CSV格式导入.不推荐用于prod的完整备份,请参见此处.要导出,请运行带有一个或多个选项的命令,如下所示(指定要备份的数据库名称和集合 - 默认为JSON,但是,如果要导入CSV则--type=csv)

mongoexport --db threads --collection messages --out messages.json
Run Code Online (Sandbox Code Playgroud)

您可以使用mongoimport将备份集合导入mongodb,如下所示

mongoimport --db threads --collection message --file messages.json
Run Code Online (Sandbox Code Playgroud)

有关更多选项,请参阅此处,特别是如果要导出查询结果.