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

时间:2016-01-31 21:52:17

标签: python mongodb pymongo database

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

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

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

3 个答案:

答案 0 :(得分:5)

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

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

那么你有三个选择,

  1. 使用mongodumpmongorestore
  2. 您可以通过复制/data目录的基础内容来创建备份(如果您希望定期备份,则cp / rsync此目录)
  3. mongoexportmongoimport(使用前请阅读here
  4. 使用mongodump并恢复

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

    mongodump
    

    早期版本需要指定--dbPath

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

    mongodump  --db test --collection collection
    

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

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

    mongorestore --dir <path> 
    

    就像mongodump一样,您可以指定主机名,端口号(如果是差异),数据库名称等等,请阅读here以获取更多信息。

    使用mongoexport和mongoimport

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

    mongoexport --db threads --collection messages --out messages.json
    

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

    mongoimport --db threads --collection message --file messages.json
    

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

答案 1 :(得分:0)

您可以使用唯一键为您的数据库创建一个小的Rest API,您团队中的所有人都可以使用它。

如果您只想使用导出一次 - 只需将其导出为JSON即可,没问题。

答案 2 :(得分:0)

您可以在云中运行MongoDB实例。例如,您可以使用MongoLab(https://mongolab.com/)或在云中的VM上安装您自己的实例,并使用其中一个云提供商,如Microsoft Azure,Amazon AWS或Google Compute引擎。或者,您可以按照JRazor的建议创建REST API,但是,这需要更多的开发工作。