MongoDB: descreva uma coleção e pesquise por data usando _id padrão

Estou usando o mongodb há um tempo e me deparei com duas situações: 1) pesquisar em uma coleção de documentos que não tinham um campo de carimbo de data / hora explícito e 2) “descrever” uma coleção. Aqui estão as perguntas que fiz para resolver essas questões.

db.collection.find( {
$where
: "this._id.getTimestamp() > new Date('PROPER_DATE_FORMAT_HERE') &&
this._id.getTimestamp() < new Date('PROPER_DATE_FORMAT_HERE')"

} );

A consulta acima usa o fato de que o campo _id padrão gerado por mongodb na verdade contém um carimbo de data / hora em seus primeiros quatro bytes e pode ser comparado a um objeto Date.

mr = db.runCommand({
"mapreduce" : "collection", "map" : function() {
for (var key in this) {
emit
(key, {type: typeof this[key]});
}
},
"reduce" : function(key, types) {
return types[0];
}, "out": "types"
})

db
[mr.result].find();

Os dois comandos acima funcionam como uma função de “descrição” em uma coleção. Presume-se que o tipo de cada campo seja o mesmo em todos os documentos da coleção. Tentei usar uma função “distinta” para extrair todos os tipos de campo exclusivos, mas não consegui descobrir como usá-la no db.runCommand. Talvez alguém possa melhorá-lo.

Aqui está a função distinta que criei:

var distinct = function (arr) {
var distinctArray = [];
for (var i = 0; i < arr.length; i += 1) {
if (distinctArray.indexOf(arr[i]) == -1) {
distinctArray
.push(arr[i]);
}
}
return distinctArray;
}