ObjectId
s са там за ситуации, в които нямате уникален ключ за всеки документ в колекция. Те са уникални, така че не е нужно да се притеснявате за конфликти и те се разделят сравнително добре при големи внедрявания без много притеснения (те имат своите плюсове и минуси, прочетете повече тук
).
ObjectId
също така съдържа клеймото за време на клиента, където ObjectId
е генериран (освен ако DB сървърът не е конфигуриран да генерира всички ключове). С това, както забелязахте, можете да използвате клеймото за време, за да извършите някои операции с дата. Ако обаче планирате да използвате Aggregation Framework, ще откриете, че не можете да използвате ObjectId
във всички операции с дати в момента (проблем
). Ако искате да използвате AF, ще ви е необходимо второ поле, което съдържа датата, като за съжаление я съхранявате двойно с ObjectId
вътрешната стойност на.
Ако можете да бъдете сигурни, че _id
който генерирате е уникален, тогава няма много причина да използвате ObjectId
във вашата структура от данни.