Recorra todas las colecciones de Mongo y ejecute la consulta

Primero, soy bastante nuevo en mongodb. Aquí está mi pregunta para la que no he podido encontrar una solución.

Digamos que tengo 3 colecciones diferentes.

mongos> show collections
collectionA
collectionB
collectionC

Quiero crear un script que repita todas las colecciones en esta base de datos y encuentre la última marca de tiempo insertada en cada una de estas colecciones. Esto es lo que funciona dentro de los 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 (iterar sobre todas las colecciones)

¿Hay alguna posibilidad de algo? me gusta.

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

Problema aquí, la tarea paramy_collections No funciona. yo obtengoSyntaxError: Unexpected identifier. ¿Necesito citar la declaración 'show'? ¿Es posible?

2. Problema (almacenando colección en js var)

Puedo solucionar el problema 1 haciendo esto:

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());
});

loslast_element.next() produce el siguiente error:

error hasNext: false en src / mongo / shell / query.js: 124

Parece que last_element no se guarda correctamente.

¿Alguna sugerencia sobre lo que estoy haciendo mal?

ACTUALIZAR

La respuesta de Neils me llevó a esta solución. Además de su código, tuve que verificar si la funcióngetTimestamp Realmente existe. Para algunas colecciones 'virtuales' parece que no hay propiedad _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)")
        }
    }
});

Respuestas a la pregunta(1)

Su respuesta a la pregunta