MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongo _id für Filialdokumentarray

Ich vermute:

{
    g: [
        { _id: ObjectId(), property: '' },
        // next
    ]
}

Art der Struktur für diese Frage.

Normalerweise nicht. _id s sind eindeutige Bezeichner für Entitäten. Wenn Sie also _id hinzufügen möchten innerhalb eines untergeordneten Dokumentobjekts, dann 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 sind so konzipiert, dass sie sich wiederholende Daten für dieses Dokument enthalten, z. B. die Adressen oder einen Benutzer oder so etwas.

Davon abgesehen _id ist nicht immer eine schlechte Sache 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) haben Sie die Adresse nicht in das Bestelldokument übernommen, dann würden Sie eine _id verwenden oder eine andere Kennung, um dieses Unterdokument herauszubekommen.

Auch das Verlinken von Dokumenten ist zu berücksichtigen. Wenn diese _id ein anderes Dokument beschreibt und die Eigenschaften benutzerdefinierte Attribute für dieses Dokument in Bezug auf dieses verknüpfte Dokument sind, dann ist das auch in Ordnung.

Eine ObjectId ist immer noch ziemlich groß, also ist das etwas, das gegenüber einer kleineren, weniger eindeutigen ID oder der Nichtverwendung einer _id berücksichtigt werden sollte überhaupt für Unterdokumente.

Für Indizes funktioniert es nicht wirklich anders als die Standard _id Feld auf dem Dokument selbst und ein eindeutiger Index über das Feld sollte in der gesamten Sammlung funktionieren (szenarioabhängig, testen Sie Ihre Abfragen).

Hinweis:MongoDB fügt keine _id hinzu zu Unterdokumenten für Sie.