【问题标题】:loading and saving mongoDB database from/to disk with pymongo使用 pymongo 从磁盘加载和保存 mongoDB 数据库
【发布时间】:2012-12-21 20:14:54
【问题描述】:

我是 mongoDB 和 pymongo 的新手,正在尝试学习如何从磁盘加载和保存数据库,以便随身携带、发送给他人等。我已经阅读了 http://api.mongodb.org/python/current/tutorial.html 上的教程但是找不到有关保存和加载数据库的有用信息。

假设我们创建一个类似的数据库:

import pymongo
mongo = pymongo.Connection()
db = mongo['my_db']
col = db['my_col']
col.insert({'name': 'Adam','occupation': 'student'})
col.insert({'name': 'John','occupation': 'officer'})
#how can we save the database to disk after this point 
#and later read it from another program?

【问题讨论】:

  • 其实我也是,没有保存和加载db的信息。
  • 我不明白你在问什么。 insert 将数据保存到数据库中。如果您正在“从/到磁盘”加载,您希望它加载到哪里?我认为您可能需要在这里了解数据库的基础知识。
  • 我的意思是当我们想从另一个程序中使用数据库时,不一定来自同一台计算机。类似于 sqlite 的 *.db 文件。
  • MongoDB 带有从您的计算机传输的内置服务器,如果您希望文件可移植(MongoDB 不像 SQLite 那样是嵌入式数据库),那么您可以复制通常位于 /data/db/mongodb 的 MongoDB 目录

标签: python mongodb pymongo


【解决方案1】:

MongoDB 文件是可移植的,有几种方法可以实现您想要的:

  • mongod 的数据目录复制到另一台计算机。该目录通常位于/data/db/mongodb。在另一台计算机上,您只需将远程目录替换为您复制的目录并重新启动远程mongod,此时您将在他们的系统上拥有数据。据我所知,MongoDB 没有热交换功能,您可以按需切换目录而无需停机。

  • 对您的数据进行热备份,并使用 MongoDB 的导出和导入功能来选择要放置到远程计算机上的数据子集。您可以通过mongodumpmongorestore 进行热备份。您可以在此处找到通用文档页面:http://docs.mongodb.org/manual/administration/backups/#using-binary-database-dumps-for-backups

  • 以 CSV/JSON 格式导出您的数据并将其导入远程计算机。这很像这个特定场景中的二进制备份,除了它们对终端方等更具可读性。我还应该注意,这种方法只插入,它与批量插入客户端迭代相同(在 PHP 之类的东西中) CSV 并在 MongoDB 服务器上调用批量插入。您可以在此处找到有关 mongoexportmongoimport(执行此操作的程序)的更多信息:http://docs.mongodb.org/manual/administration/import-export/

您还可以在此处找到与备份数据、移动数据和在外国机器上恢复数据相关的一般信息:http://docs.mongodb.org/manual/administration/backups/

【讨论】:

    【解决方案2】:
    • 要使用 pymongo 在 mongodb 中插入新条目,您所做的就足够了。即这样做

      col.insert({'name': 'John','occupation': 'officer'})

    将这些条目自动保存在集合中。您还可以像这样使用 pymongo 更改条目:

    col.update({'name': 'Adam'},{'$set':{'occupation': 'officer'}})
    

    最后关闭连接也是一个好习惯:

    mongo.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-03
      • 2021-06-07
      • 2010-11-29
      • 1970-01-01
      • 2012-11-13
      • 2017-07-17
      • 1970-01-01
      • 2012-10-12
      相关资源
      最近更新 更多