För min relativt lilla lilla databas använde jag så småningom följande lösning. Det är inte riktigt lämpligt för stora eller komplexa databaser, men det räcker för mitt fall. Den dumpar alla dokument som en json till backupkatalogen. Den är klumpig, men den förlitar sig inte på andra saker än pymongo.
from os.path import join
import pymongo
from bson.json_utils import dumps
def backup_db(backup_db_dir):
client = pymongo.MongoClient(host=<host>, port=<port>)
database = client[<db_name>]
authenticated = database.authenticate(<uname>,<pwd>)
assert authenticated, "Could not authenticate to database!"
collections = database.collection_names()
for i, collection_name in enumerate(collections):
col = getattr(database,collections[i])
collection = col.find()
jsonpath = collection_name + ".json"
jsonpath = join(backup_db_dir, jsonpath)
with open(jsonpath, 'wb') as jsonfile:
jsonfile.write(dumps(collection))