如何使用 pymongo 备份和恢复 MongoDB?

why*_*pro 5 python mongodb pymongo

pymongo是否提供API来启用集合和行的备份或导出?

Sal*_*til 1

我分两部分来回答这个问题

  • pymongo 是否提供 API 来启用集合和行的备份或导出?

目前还没有。它没有提供 backup/mongodump 的绑定方法

  • 可以使用 pymongo 来备份或导出集合和行吗?

是的。假设我们有一个集合 col,其中包含以下文档

{
   'price':25,
   'name':'pen'
},
{
   'price':20,
   'name':'pencil'
},
{
   'price':10,
   'name':'paper'
},
{
   'price':25000,
   'name':'gold'
}
Run Code Online (Sandbox Code Playgroud)

我们的目的是备份所有满足价格小于100的文档。使用pymongo的find功能。这可以通过

db.col.find({'price':{'$lt': 100}})
Run Code Online (Sandbox Code Playgroud)

上面的代码返回一个游标对象。我们备份所需的所有文档都在该游标对象中。

插入所有文档的一种简单方法是逐个递归调用文档并插入它们。

但更好的方法是在光标上使用 list() 并一次性插入所有文档。

cursor = db.col.find({'price':{'$lt': 100}})
db.backup.insert(list(cursor))
Run Code Online (Sandbox Code Playgroud)

备份集合的内容将是

{
   'price':25,
   'name':'pen'
},
{
   'price':20,
   'name':'pencil'
},
{
   'price':10,
   'name':'paper'
}
Run Code Online (Sandbox Code Playgroud)

如果没有要求限制备份的条目。可以使用空的 find()

cursor = db.col.find()
db.backup.insert(list(cursor))
Run Code Online (Sandbox Code Playgroud)