acelerar o processamento de conjunto de resultados grande usando o rmongodb

Eu estou usando o rmongodb para obter todos os documentos em uma coleção particular. Funciona, mas estou trabalhando com milhões de pequenos documentos, potencialmente 100M ou mais. Estou usando o método sugerido pelo autor no site: cnub.org/rmongodb.ashx

count <- mongo.count(mongo, ns, query)
cursor <- mongo.find(mongo, query)
name <- vector("character", count)
age <- vector("numeric", count)
i <- 1
while (mongo.cursor.next(cursor)) {
    b <- mongo.cursor.value(cursor)
    name[i] <- mongo.bson.value(b, "name")
    age[i] <- mongo.bson.value(b, "age")
    i <- i + 1
}
df <- as.data.frame(list(name=name, age=age))

Isso funciona bem para centenas ou milhares de resultados, mas o loop while é MUITO MUITO lento. Existe alguma maneira de acelerar isso? Talvez uma oportunidade para multiprocessamento? Qualquer sugestão seria apreciada. Tenho uma média de 1 milhão por hora e, nesse ritmo, precisarei de uma semana apenas para criar o quadro de dados.

EDIT: Eu notei que quanto mais vetores no loop while o mais lento fica. Agora estou tentando fazer um loop separadamente para cada vetor. Ainda parece um truque, deve haver uma maneira melhor.

Edit 2: Estou tendo alguma sorte com o data.table. Ainda está funcionando, mas parece que vai terminar o 12M (este é o meu conjunto de testes atual) em 4 horas, isso é progresso, mas longe do ideal

dt <- data.table(uri=rep("NA",count),
                 time=rep(0,count),
                 action=rep("NA",count),
                 bytes=rep(0,count),
                 dur=rep(0,count))

while (mongo.cursor.next(cursor)) {
  b <- mongo.cursor.value(cursor)
  set(dt, i, 1L,  mongo.bson.value(b, "cache"))
  set(dt, i, 2L,  mongo.bson.value(b, "path"))
  set(dt, i, 3L,  mongo.bson.value(b, "time"))
  set(dt, i, 4L,  mongo.bson.value(b, "bytes"))
  set(dt, i, 5L,  mongo.bson.value(b, "elaps"))

}

questionAnswers(2)

yourAnswerToTheQuestion