MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak skopiować kolekcję z jednej bazy danych do innej bazy danych na tym samym serwerze za pomocą PyMongo?

Po wielu zamieszaniu i poszukiwaniach duszy, w końcu udało mi się wyśledzić to, że wpisy w Pythonie są nieuporządkowane (przynajmniej przed 3.6) i MongoDB oczekując uporządkowanego słownika BSON.

Korzystanie z OrderedDict, jak wskazano w Jak zamówić słowniki w pymongo? rozwiązać ten problem:

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

Inną alternatywą jest użycie SON obiekt z BSON.

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

Innym podejściem jest przekazanie JavaScript do MongoDB za pomocą eval() funkcja:

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

Uważam, że surowa wersja JavaScript jest mniej pythoniczna, ale jest przydatna, ponieważ pozwoliła mi przetestować funkcjonalność MongoDB bez konieczności uruchamiania powłoki MongoDB. Nie widziałem też, by wspominano o tym zbyt wiele w pytaniach dotyczących PyMongo StackOverflow, więc pomyślałem, że warto je tutaj uwzględnić.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak pobrać następny i poprzedni element bieżącego za pomocą Mongoose?

  2. Użycie pecl do zainstalowania sterownika Mongodb w systemie OS X El Capitan (wersja 10.11.1)

  3. Jak mogę połączyć wiele kolekcji w jedną kolekcję za pomocą $lookup mongodb lub nodejs mongodb?

  4. Jak sortować według „wartości” określonego klucza we właściwości przechowywanej jako tablica z parami k-v w mongodb

  5. Błąd podczas uruchamiania obrazu mongo - docker-entrypoint.sh:linia 381