主要是为了批量清理临时结果集,当然清理其他的结果集也没问题。。。
>>把功能函数持久化,可以理解为和SQL的存储过程性质一样。。。
db.system.js.save({
_id:'batchDrop',
value:
function(prefix) {
prefix = !prefix ? 'tmp.mr' : prefix;
var names = db.getCollectionNames();
var info = {total:0, names:[]};
for( i in names) {
if(names[i].indexOf(prefix) == 0) {
db[names[i]].drop();
info.total++;
info.names.push(names[i]);
}
}
return info;
}
})
>>临时结果集如下
tmp_mo_spcode_consignid_region_serviceid_20120817
tmp_mo_spcode_consignid_region_serviceid_20120818
tmp_mo_spcode_consignid_region_serviceid_20120819
tmp_mo_spcode_consignid_region_serviceid_20120819_1
tmp_mo_spcode_consignid_region_serviceid_20120820
tmp_mo_spcode_consignid_region_serviceid_20120821
>>开始清理
> var info = db.eval("batchDrop('tmp_mo_spcode_consignid_region_serviceid_20120817')");
> printjson(info);
{
"total" : 1,
"names" : [
"tmp_mo_spcode_consignid_region_serviceid_20120817"
]
}
> var info = db.eval("batchDrop('tmp_mo_spcode_consignid_region_serviceid_2012081')");
> printjson(info);
{
"total" : 3,
"names" : [
"tmp_mo_spcode_consignid_region_serviceid_20120818",
"tmp_mo_spcode_consignid_region_serviceid_20120819",
"tmp_mo_spcode_consignid_region_serviceid_20120819_1"
]
}
> var info = db.eval("batchDrop()");
> printjson(info);
{
"total" : 3,
"names" : [
"tmp.mr.mapreduce_1345517874_17406",
"tmp.mr.mo.000953",
"tmp.mr.mt.000953"
]
}