MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Bagaimana saya bisa menyalin satu koleksi dari MongoDB menggunakan pymongo dan menempel ke koleksi kosong lainnya?

Masalah dengan contoh kode Anda adalah find() mengembalikan kursor database untuk koleksi, tidak semua dokumen dalam koleksi. Jadi ketika Anda remove semua dokumen dari home koleksi, kursor juga akan menunjuk ke koleksi kosong.

Untuk menyalin koleksi ke koleksi lain di server yang sama, Anda dapat menggunakan Agregasi MongoDB operator $match dan $out

pipeline = [ {"$match": {}}, 
             {"$out": "destination_collection"},
]
db.source_collection.aggregate(pipeline)

Menggunakan kode contoh Anda, sekarang kamu bisa

source = db["source_collection"]
destination = db["destination_collection"]

# Remove all documents, or make modifications. 
source.remove({}) 

# Restore documents from the source collection.  
for doc in destination: 
      source.insert(doc)
# or instead you can just use the same aggregation method above but reverse the collection name. 

Catatan :db.collection.copyTo() telah ditinggalkan sejak MongoDB v3.0.

Jika Anda ingin menyalin ke server MongoDB lain, Anda dapat menggunakan db.cloneCollection() . Di PyMongo itu akan menjadi perintah seperti di bawah ini:

db.command("cloneCollection", **{'collection': "databaseName.source_collection", 'from': "another_host:another_port"})

Bergantung pada sasaran keseluruhan Anda, Anda mungkin menemukan metode Pencadangan MongoDB berguna.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana Anda melakukan operator Suka SQL di mongoDB menggunakan driver C # resmi?

  2. Fungsi agregat menduplikasi item dalam ng-repeat pada penyegaran halaman. Perlu mencari cara untuk menghentikan duplikasi. Angularjs Mongodb luwak

  3. Menjalankan Kueri MongoDB di Peta/Kurangi

  4. Caching koneksi MongoDB di Django

  5. Jangan DAPATKAN req.query.name ke collection.find di express dan MongoDB