MongoDB не поддерживает автоинкрементные ID как реляционные базы данных. Однако существует несколько подходов в зависимости от твоих задач.
ObjectId — это стандартный тип _id в MongoDB и обычно лучший выбор. Он:
1. Counter Collection Pattern
Веди отдельную коллекцию counters и используй findOneAndUpdate с $inc для атомарной генерации последовательных целых чисел:
db.counters.findOneAndUpdate(
{ _id: "orderId" },
{ $inc: { seq: 1 } },
{ returnDocument: "after", upsert: true }
)
2. UUIDs
Используй стандартные строки UUID v4 как поле _id:
3. Генерация последовательностей на уровне приложения
Генерируй ID в логике приложения с помощью библиотек или распределённых стратегий, таких как Snowflake IDs:
ObjectId автоматически генерируется драйвером MongoDB и содержит встроенную временную метку, которая обеспечивает неявную сортировку документов по порядку создания.
Новый — ещё не проверен сообществом
Вы