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

Jak mogę skopiować jedną kolekcję z MongoDB za pomocą pymongo i wkleić do innej pustej kolekcji?

Problem z twoim przykładem kodu polega na tym, że find() zwraca kursor bazy danych do kolekcji, nie wszystkie dokumenty w kolekcji. Więc kiedy remove wszystkie dokumenty z home kolekcja, kursor wskaże również pustą kolekcję.

Aby skopiować kolekcję do innej kolekcji na tym samym serwerze, możesz użyć Agregacja MongoDB operator $match i $out

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

Używając przykładowego kodu, teraz możesz zrobić

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. 

Uwaga :db.collection.copyTo() został wycofany od MongoDB v3.0.

Jeśli chcesz skopiować na inny serwer MongoDB, możesz użyć db.cloneCollection() . W PyMongo byłoby to polecenie takie jak poniżej:

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

W zależności od ogólnego celu możesz znaleźć metody MongoDB BackUp użyteczne.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wystąpił problem podczas dzielenia i zliczania danych w pliku CSV w MONGODB (posiadanie wartości Null w kolumnach, takich jak nazwa kolumny:)

  2. Jaki jest najlepszy sposób na znalezienie najczęściej występującej wartości w MongoDB?

  3. Obiekt #<MongoClient> nie ma metody „open”

  4. mongodb $w limicie

  5. Ramy agregacji Mongodb | Grupować wiele wartości?