Du bör lämna ObjectID-generering till klienterna/drivrutinerna. Detta säkerställer att genererade ID:n är unika bland många saker, såsom tid, server och process. Att använda standardobjekt-ID innebär också att metoder som implementeras av drivrutiner (som getTimestamp()) fungerar.
Men om du funderar på att använda din egna typ av ID för fältet _id (dvs. inte standardtypen ObjectID), då gör det ett genomförbart val. Om du till exempel vill lagra information om en twitteranvändare, är det helt logiskt att använda användarens twitter-ID som _id-värde. Personligen försöker jag lita på ObjectID-typen så lite som jag måste, eftersom samlingar ofta redan har ett fält i varje dokument som unikt identifierar varje dokument.