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.