ObjectId
Sono disponibili per le situazioni in cui non si dispone di una chiave univoca per ogni documento in una raccolta. Sono unici, quindi non devi preoccuparti dei conflitti e si scheggiano abbastanza bene in grandi distribuzioni senza troppe preoccupazioni (hanno pro e contro, leggi di più qui
).
Il ObjectId
contiene anche il timestamp del client in cui è ObjectId
è stato generato (a meno che il server DB non sia configurato per generare tutte le chiavi). Con ciò, come hai notato, puoi utilizzare il timestamp per eseguire alcune operazioni sulla data. Tuttavia, se prevedi di utilizzare Aggregation Framework, scoprirai che non puoi utilizzare un ObjectId
in qualsiasi operazione sulla data attualmente (issue
). Se vuoi utilizzare l'AF, ti servirà un secondo campo che contenga la data, purtroppo memorizzandola doppiamente con ObjectId
il valore interno di.
Se puoi essere certo che il _id
che stai generando è unico, quindi non ci sono molte ragioni per usare un ObjectId
nella tua struttura dati.