2014-06-23 19 views
7

Nesnelerin bir tarih olduğu, mongoengine tarafından desteklenen büyük bir MongoDB veritabanına sahibim. İşi kolaylaştırmak için eski nesneleri arşivlemek, ancak bunları bir yerde tutmak istiyorum.Eski verileri arşivle mongoengine

Belgeyi okudum ve switch_db ve switch_collection numaralı telefondan geldim. Ancak, ya iş yapamıyorum.

Her iki durumda da, belgeler iki kullanım senaryosuna başvurur. Bir QuerySet operasyonu olarak

  1. :

    user = User.objects.get(id=user_id) 
    user.switch_collection('old-users') 
    user.save() 
    

    bu sorun yalnızca tek bir nesne için çalışır olduğunu. Birden çok belgeyi toplu olarak arşivlemek mümkün değildir.

  2. context_manager bir gibi:

    ValidationError (Document:None) (Field is required... 
    

denedim yolu arıyor:

with switch_collection(Group, 'group1') as Group: 
Group(name="hello testdb!").save() # Saves in group1 collection 

bu kullanma Hatta şu hatayı alıyorum, sorgu yapamaz Mongoengine ile veri arşivlemek için, ancak seçeneklerin hiçbiri işe yaramıyor. Bir öneriniz var mı?

+1

koymak deneyin yeni users koleksiyonuna üzerinde yeni değerler kopyalamak için basit komut dosyasını çalıştırın:

Bu komutu kullanarak users-old için geçerli users koleksiyonunu adlandırabilirsiniz ' modellerden doc dosyasını arşiv komut dosyanıza aktarın –

+0

Teşekkürler, bu hatayı düzelttikten sonra yeni bir tane aldım, sanırım yeni bir db'ye bağlanmalıyım ama bu konuda dokümanlar hakkında hiçbir şey bulamadım. – liarspocker

+0

Hat bağlantısı ('doc-archive') mongodb'a başarılı bir şekilde ulaşıp ulaşmadığını test etmeye çalıştınız mı? –

cevap