MongoEngine: Speichern von EmbeddedDocument in DictField

8

Ich modelliere eine MongoBD-Datenbank in MongoEngine für ein Webprojekt. Ich möchte die Daten auf eine etwas ungewöhnliche Weise speichern, um sie später effizient abfragen zu können.

Unsere Daten in MongoDB sehen in etwa so aus:

%Vor%

Mein erster Instinkt war, es so in MongoEngine zu modellieren:

%Vor%

Mit anderen Worten, was ich im Wesentlichen möchte, ist das Gleiche, wenn ich ein EmbeddedDocument in einem ListField speichere, sondern in einem DictField mit dynamischen Schlüsseln für jedes EmbeddedDocument.

Beispiel, dass mit einem ListField als Referenz erlaubt ist:

%Vor%

Ich würde es vorziehen, dass MongoEngine-Objekte auch für die verschachtelten "Inner" -Dokumente zurückgegeben werden, während weiterhin ein DictField + EmbeddedDocument verwendet wird (wie dict "value"). Wie kann ich dies in MongoEngine modellieren? Ist es überhaupt möglich oder muss ich alle Daten naiv unter ein generisches DictField legen?

    
robinandeer 18.11.2014, 10:21
quelle

1 Antwort

14

Ich habe endlich die Antwort auf mein Problem gefunden. Der richtige Weg, um dieses Muster zu erreichen, ist die Verwendung eines MapField .

>

Das entsprechende Modell in MongoEngine sieht folgendermaßen aus:

%Vor%

In MongoDB müssen alle Schlüssel Zeichenfolgen sein, so dass für die Schlüssel in MapField kein "Feldtyp" angegeben werden muss.

    
robinandeer 19.11.2014, 16:45
quelle