Puede intentar utilizar los primeros 4 bytes de ObjectID (representarán la marca de tiempo).
Pero, para ser 100% seguro, es mejor crear una identificación corta realmente única, mediante la implementación de un contador. Puede usar una colección separada para mantener el valor actual de su contador.
Más detalles sobre la estructura de objeto de mongo se pueden encontrar aquí: http://www.mongodb.org/display/DOCS/Object+IDs
Como alternativa, se puede convertir convertir hexagonal representación string id a una representación basada en 36 símbolos (26 letras latinas + 10 dígitos). Obviamente será más corto.
Parece que hay una biblioteca de rubí, que puede hacer este tipo de conversiones http://rubyworks.github.com/radix/
respuesta muy útil, pero ¿por qué 22 letras latinas + 10 dígitos en lugar de 26 letras latinas + 10 dígitos? – alapeno
¡buen punto! no tengo ni idea, ¿por qué escribí 22 :) – aav
Podemos profundizar y usar 52 letras latinas, 10 dígitos y algunos otros literales '_-' =) Y luego con radix64 obtenemos la longitud 'log64 (2^96) = 16' en lugar del 'log16 original (2^96) = 24'. –