Percorra todas as coleções do Mongo e execute a consulta

Primeiro, eu sou bastante novo no mongodb. Aqui está minha pergunta para a qual não consegui encontrar uma solução.

Digamos que eu tenho 3 coleções diferentes.

mongos> show collections
collectionA
collectionB
collectionC

Quero criar um script que itere sobre todas as coleções desse banco de dados e encontre o último carimbo de data / hora inserido em cada uma dessas coleções. Aqui está o que funciona dentro dos mongos.

var last_element = db.collectionA.find().sort({_id:-1}).limit(1);
printjson(last_element.next()._id.getTimestamp());
ISODate("2014-08-28T06:45:47Z")

1. Problema (repita todas as coleções)

Existe alguma possibilidade de sth. gostar.

var my_collections = show collections;
my_collections.forEach(function(current_collection){
    print(current_collection);
});

Problema aqui, a atribuição paramy_collections não funciona. eu receboSyntaxError: Unexpected identifier. Preciso citar a declaração 'show'? Isso é possível?

2. Problema (armazenando coleção em js var)

Eu posso solucionar o problema 1 fazendo o seguinte:

var my_collections = ["collectionA", "collectionB", "collectionC"];
my_collections.forEach(function(current_collection){
    var last_element = db.current_collection.find().sort({_id:-1}).limit(1);
    print(current_collection);
    printjson(last_element.next()._id.getTimestamp());
});

olast_element.next() produz o seguinte erro:

erro hasNext: false em src / mongo / shell / query.js: 124

Parece que last_element não está salvo corretamente.

Alguma sugestão sobre o que estou fazendo de errado?

ATUALIZAR

A resposta de Neils me levou a esta solução. Além de seu código, tive que verificar se a funçãogetTimestamp realmente existem. Para algumas coleções 'virtuais', parece não haver propriedade _id.

db.getCollectionNames().forEach(function(collname) {
    var last_element = db[collname].find().sort({_id:-1}).limit(1);
    if(last_element.hasNext()){
        var next = last_element.next();
        if(next._id !== undefined && typeof next._id.getTimestamp == 'function'){
           printjson(collname + " >> "+next._id.getTimestamp());
        }else{
          print(collname + " undefined!! (getTimestamp N/A)")
        }
    }
});

questionAnswers(1)

yourAnswerToTheQuestion