ObjectId
s sind für Situationen da, in denen Sie nicht für jedes Dokument in einer Sammlung einen eindeutigen Schlüssel haben. Sie sind einzigartig, sodass Sie sich keine Sorgen um Konflikte machen müssen, und sie teilen sich in großen Bereitstellungen ohne allzu große Sorgen recht gut (sie haben Vor- und Nachteile, lesen Sie mehr hier
).
Die ObjectId
enthält auch den Zeitstempel des Clients, wobei die ObjectId
generiert wurde (es sei denn, der DB-Server ist so konfiguriert, dass alle Schlüssel generiert werden). Damit können Sie, wie Sie bemerkt haben, den Zeitstempel verwenden, um einige Datumsoperationen durchzuführen. Wenn Sie jedoch das Aggregation Framework verwenden möchten, werden Sie feststellen, dass Sie keine ObjectId
verwenden können derzeit in allen Datumsoperationen (Ausgabe
). ). Wenn Sie den AF verwenden möchten, benötigen Sie ein zweites Feld, das das Datum enthält, das leider doppelt mit der ObjectId
gespeichert wird 's interner Wert.
Wenn Sie sicher sein können, dass die _id
Sie generieren eindeutig ist, gibt es keinen Grund, eine ObjectId
zu verwenden in Ihrer Datenstruktur.