2016-12-09 6 views
0

так как eval() и copyTo() устарели от mongodb3 +. Я смотрю на способ взять резервную копию коллекции, используя что-то вродерезервная копия с использованием pymongo

db.collection.find(). Foreach (функция (d) {db.collection_backup.save (d)})

Я в основном ищут помощь по этим двум.

1: Как запустить любой файл .js на Mongo с PyMongo. Пример: mongo < something.js и файл js могут иметь определенный набор команд или функций. 2: как мне выполнить мой код выше, чтобы взять резервную копию коллекций через 100-ые базы данных, используя pymongo

Заранее спасибо за помощь.

ответ

0

PyMongo делает не включает в себя функцию для выполнения файла .js на сервере.

Конвейер агрегации с $ out является эффективным способом копирования коллекции. Если вы хотите создать резервную копию коллекции «role», например, в каждой базе данных:

from pymongo import MongoClient 

client = MongoClient() 
for db_name in client.database_names(): 
    db = client[db_name] 
    if 'role' in db.collection_names(): 
     print('copy %s.role' % db_name) 
     db.role.aggregate([{'$match': {}}, {'$out': 'role_backup'}]) 
+0

Спасибо, Джесси за ответ. Мое требование здесь - взять резервную копию коллекций, чем db. Позвольте мне быть более ясным. У меня есть репликатор mongodb-3.2.4, который имеет 100 баз данных, таких как client1, client2, client3 .... upto client100. Каждый клиент db имеет коллекцию под названием 'role'. Наше приложение собирается внести некоторые изменения в коллекцию, поэтому, чтобы быть более безопасной, я должен взять резервную копию всех коллекций до изменения кода приложения. У меня есть функция, подобная описанной выше, для резервного копирования. Мне нужно запустить его и взять резервную копию коллекции по всем dbs '. – linus999

+0

http://stackoverflow.com/questions/11858689/pymongo-foreach-formatting?noredirect11&lq=1 может быть чем-то подобным тому, на что здесь ответил @Ivc. Позвольте мне посмотреть, могу ли я найти какие-либо указатели. – linus999

+0

Обновлен мой ответ. –

Смежные вопросы