Potresti usare un MapReduce lavoro per questo.
MapReduce consente di specificare una raccolta esterna in cui archiviare i risultati.
Quando hai una funzione map che emette ogni documento con il suo _id come chiave e una funzione reduce che restituisce la prima voce (e in questo caso solo perché _id sono univoci) dell'array di valori, MapReduce è essenzialmente un'operazione di copia dal fonte-raccolta all'out-raccolta.
Codice non testato:
db.runCommand(
{
mapReduce: "mongo_collection",
map: function(document) {
emit(document._id, document);
},
reduce: function(key, values) {
return values[0];
},
out: {
merge:"mongo_his_collection"
}
}
)