Mongo _id für das Filialdokumentarray

8

Ich möchte eine _id als Eigenschaft für Objekte in einem Mongo-Array hinzufügen.

Ist das eine gute Praxis? Gibt es Probleme bei der Indizierung?

    
danidacar 20.11.2012, 11:50
quelle

1 Antwort

16
  

Ich möchte eine _id als Eigenschaft für Objekte in einem Mongo-Array hinzufügen.

Ich nehme an:

%Vor%

Strukturtyp für diese Frage.

  

Ist das eine gute Praxis?

Nicht normal. _id s sind eindeutige Bezeichner für Entitäten. Wenn Sie also _id innerhalb eines Unterdokuments hinzufügen möchten, haben Sie Ihre Daten möglicherweise nicht sehr gut normalisiert und dies könnte ein Zeichen für einen grundlegenden Fehler in Ihrem Schemadesign sein.

Unterdokumente enthalten wiederkehrende Daten für dieses Dokument, d. h. die Adressen oder einen Benutzer oder etwas.

Das heißt _id ist nicht immer schlecht hinzuzufügen. Nehmen Sie das Beispiel, das ich gerade mit Adressen angegeben habe. Stellen Sie sich vor, Sie hätten ein Warenkorbsystem und (aus irgendeinem Grund) würden Sie die Adresse nicht in das Auftragsdokument replizieren, dann würden Sie ein _id oder eine andere Kennung verwenden, um dieses Unterdokument herauszuholen.

Auch Sie müssen in Betracht ziehen, Dokumente zu verbinden. Wenn dieses _id ein anderes Dokument beschreibt und die Eigenschaften benutzerdefinierte Attribute für dieses Dokument in Bezug auf das verlinkte Dokument sind, dann ist das auch in Ordnung.

  

Gibt es Probleme bei der Indexierung?

Ein ObjectId ist immer noch recht groß, so dass man etwas über eine kleinere, weniger eindeutige ID in Betracht ziehen sollte oder gar kein _id für Unterdokumente verwenden sollte.

Für Indizes funktioniert es nicht wirklich anders als das Standardfeld _id im Dokument selbst und ein eindeutiger Index quer durch das Feld sollte innerhalb der Sammlung funktionieren (abhängig vom Szenario, testen Sie Ihre Abfragen).

Hinweis: MongoDB fügt für Ihre Unterdokumente kein _id hinzu.

    
Sammaye 20.11.2012 13:41
quelle

Tags und Links