MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Как да копирам колекция от една база данни в друга база данни на същия сървър с помощта на PyMongo?

След много объркване и дълбоко търсене, в крайна сметка успях да проследя това до dicts в Python, които не бяха подредени (поне преди 3.6) и MongoDB очакваше подреден BSON речник.

Използване на OrderedDict, както е посочено в Как да получите поръчка речници в pymongo? разреши това:

>>> from collections import OrderedDict
>>> client.admin.command(
    OrderedDict([('renameCollection','db1.coll2'), ('to','db2.coll2')]))
{u'ok': 1.0}

Друга алтернатива е да използвате SON обект от BSON.

>>> import bson
>>> client.admin.command(
    bson.son.SON([('renameCollection','db1.coll2'), ('to','db2.coll2')]))
{u'ok': 1.0}

Друг подход е да прехвърлите Javascript към MongoDB с помощта на eval() функция:

>>> client.admin.eval(
    "db.runCommand({'renameCollection':'db1.coll2', 'to':'db2.coll2'})") 
{u'ok': 1.0}

Намирам необработената версия на Javascript за по-малко питонична, но е полезна, защото ми позволи да тествам функционалността на MongoDB, без да се налага да стартирам обвивка на MongoDB. Също така не съм го виждал да се споменава много във въпросите на PyMongo StackOverflow, така че реших, че си струва да го включа тук.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да използвам променлива като име на поле в mongodb-native findOne()?

  2. Извикване на MongoDB съхранена Javascript функция в C# .Net

  3. Ограничение за групово вмъкване на Mongodb в Python

  4. Производителност на заявка за актуализиране на Mongo DB

  5. Как да намерите размера на конкретния документ в MonogoDB Collection?