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

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

Проблемът с вашия примерен код е, че find() връща курсор на база данни към колекцията, а не всички документи в колекцията. Така че, когато remove всички документи от home колекция, курсорът също ще сочи към празна колекция.

За да копирате колекция в друга колекция в същия сървър, можете да използвате MongoDB Aggregation оператор $match и $out

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

Използвайки вашия примерен код, сега можете да направите

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. 

Забележка :db.collection.copyTo() е отхвърлен от MongoDB v3.0.

Ако искате да копирате на друг MongoDB сървър, можете да използвате db.cloneCollection() . В PyMongo това би била команда като по-долу:

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

В зависимост от общата ви цел може да намерите методи за архивиране на MongoDB полезен.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb :Увеличаване на максималните връзки в mongodb

  2. Как да използвам MongoDB транзакция с Mongoose?

  3. Вземете данни между две дати mongo

  4. @EnableMongoAuditing за MongoDB в Cloud Foundry / mongolab

  5. Как да получите обяснение за броя на MongoDB?