2014-06-23 4 views
7

Ich habe eine riesige MongoDB-Datenbank von Mongoengine, wo die Objekte ein Datum haben. Um die Arbeit zu erleichtern, möchte ich alte Objekte archivieren, sie aber irgendwo aufbewahren.Archiv alte Daten in Mongoengine

Ich habe die Dokumentation gelesen und stieß auf switch_db und switch_collection. Ich kann jedoch keine Arbeit machen.

In beiden Fällen verweist die Dokumentation auf zwei Verwendungsszenarien.

  1. Als QuerySet Betrieb:

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

    Das Problem dabei ist es nur für ein einzelnes Objekt funktioniert. Es ist nicht möglich, mehrere Dokumente stapelweise zu archivieren.

  2. Als context_manager:

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

    diese Verwendung Ich kann nicht einmal die Abfrage machen, die folgende Störung erhalten:

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

Ich habe versucht, einen Weg suchen um Daten mit Mongoengine zu archivieren, aber keine der Optionen scheint zu funktionieren. Hast du einen Vorschlag?

+1

versuchen setzen: '

Sie können Ihre aktuelle users Sammlung users-old mit diesem Befehl umbenennen von den Modellen importieren Doc' in Ihr Archivskript –

+0

Danke, nachdem ich diesen Fehler behoben habe, bekomme ich einen neuen, ich denke, ich muss mich mit einer neuen db verbinden, habe aber nichts in den Dokumenten gefunden. – liarspocker

+0

Sie haben versucht zu testen, ob die Verbindungsleitung ('doc-archive') erfolgreich zu mongodb reicht? –

Antwort