с телеграмма по их id, стоит ли мне использовать свойство Документа _id, или лучше создать новое свойство id / userId для этого?
я лично пришёл к тому, чтобы не трогать _id вообще, любые данные пишу в дополнительно созданные поля. А _id удобен тем, что он постоянно возрастает и его можно использовать для потоковой обработки документов и запоминать, где остановилась обработка.
Потоковой обработке? А зачем она может понадобиться? И с прерыванием ещё...
Не всегда _id возрастает - есть граничный случай. Когда счетчик в младших битак objectid переполняется, он обнуляется. И если одновременно не настанет следующая секунда _id уменьшится относительно предидущего.
🤔 Как часто такое происходит? Я имею в виду, как много байт/бит в этом счётчике?
https://docs.mongodb.com/manual/reference/method/ObjectId/ Не часто, но в моем случае - когда по objectId пытались собирать точки полигона это было неприемлемо.
Тут написано Returns a new ObjectId value. The 12-byte ObjectId value consists of: a 4-byte timestamp value, representing the ObjectId's creation, measured in seconds since the Unix epoch a 5-byte random value generated once per process. This random value is unique to the machine and process. a 3-byte incrementing counter, initialized to a random value Под "process" имеется же в виду клиентский процесс, в котором драйвер создаёт ObjectID значения? Тогда получается в пределах секунды что угодно может произойти т.к. разные процесс будут присылать Object() со своим уникальным 5-байтовым ключом.
Да, objid генерит драйвер клиента.
Обсуждают сегодня