MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Làm cách nào để sao chép một bộ sưu tập từ cơ sở dữ liệu này sang cơ sở dữ liệu khác trên cùng một máy chủ bằng PyMongo?

Sau rất nhiều bối rối và tìm kiếm linh hồn, cuối cùng tôi đã có thể theo dõi điều này để tìm ra các lệnh trong Python không có thứ tự (ít nhất là trước 3.6) và MongoDB mong đợi một từ điển BSON có thứ tự.

Sử dụng một OrderedDict như được chỉ ra trong Cách đặt hàng từ điển trong pymongo? giải quyết vấn đề này:

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

Một giải pháp thay thế khác là sử dụng SON đối tượng từ BSON.

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

Một cách tiếp cận khác là chuyển Javascript sang MongoDB bằng cách sử dụng eval() chức năng:

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

Tôi thấy phiên bản Javascript thô ít phức tạp hơn nhưng hữu ích vì nó cho phép tôi kiểm tra chức năng MongoDB mà không cần phải kích hoạt trình bao MongoDB. Tôi cũng không thấy nó được đề cập nhiều trong các câu hỏi của PyMongo StackOverflow nên tôi nghĩ nó đáng để đưa vào đây.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Trong mongodb biết chỉ số của phần tử mảng khớp với toán tử $ in?

  2. Đối tượng bộ sưu tập không phải là lỗi có thể gọi được với PyMongo

  3. định dạng lưu trữ mongodb là gì?

  4. Mongodb $ lookup bộ sưu tập động

  5. Mongoose:gán trường kiểu 'mảng chuỗi'