Generowanie ObjectID należy pozostawić klientom/sterownikom. Daje to pewność, że wygenerowane identyfikatory są unikalne wśród wielu rzeczy, takich jak czas, serwer i proces. Używanie standardowego ObjectID oznacza również, że metody zaimplementowane przez sterowniki (takie jak getTimestamp()) działają.
Jeśli jednak myślisz o używaniu swoich własnych typ identyfikatora dla pola _id (tj. nie standardowy typ ObjectID), to jest realnym wyborem. Na przykład, jeśli chcesz przechowywać informacje o użytkowniku Twittera, użycie jego identyfikatora Twittera jako wartości _id ma sens. Osobiście staram się polegać na typie ObjectID tak mało, jak tylko muszę, ponieważ często kolekcje mają już w każdym dokumencie pole, które jednoznacznie identyfikuje każdy dokument.