mongodb学习6--js操作mongodb

一,mongo知识储备:
1. 获取mongoDB中数据库的大小命令
use databasename
db.stats()
显示信息如下

> db.stats()
{
"collections" : 3,
"objects" : 80614,
"dataSize" : 21069700,
"storageSize" : 39845376,
"numExtents" : 9,
"indexes" : 2,
"indexSize" : 6012928,
"ok" : 1
}

其中storage表示的就是数据库的大小,显示出的数字的单位是字节,因此如果需要转换单位为KB需要除以1024


2. 获取MongoDB中collection

db.collection.dataSize()
//collection中的数据大小
db.collection.storageSize()
//为collection分配的空间大小,包括未使用的空间
db.collection.totalIndexSize()
collection中索引数据大小
db.collection.totalSize()
collection中索引+data所占空间

 

二,js操作实例:

1,遍历一个mongo库下所有的表

// 获取一个collection下所有的表,并进行操作
var
today = new Date(); var beforeday = new Date(today.valueOf()-24*3600*1000*2); var beforedate = beforeday.getFullYear()*10000+(beforeday.getMonth()+1)*100+beforeday.getDate(); print(beforedate+'==============clean==========') //前天日期 conn = new Mongo(); db = conn.getDB("collection1"); //选择数据库 lists = db.getCollectionNames(); for(i in lists){ if(lists[i].substr(0,9) == 'sendclick'){ print(lists[i]+"-----"+db[lists[i]].count()) db[lists[i]].remove({cd:{$lte:beforedate}}) } } for(i in lists){ if(lists[i].substr(0,9) == 'sendclick' && db[lists[i]].count() == 0){ print(lists[i]+"----drop---"+db[lists[i]].count()) db[lists[i]].drop() } }

 


2,处理遍历输出结果

db.table1.group({key:{xxx:1},cond:{cd:20160524},reduce:function(obj,prev){prev.cnum++},initial:{cnum:0}}).forEach(
    function(x){
        db.table2.insert(x)
    }
)
db.table3.group({key:{xxx:1},cond:{cd:20160601,cid:"xxxxxxxxx"},reduce:function(obj,prev){prev.cnum++},initial:{cnum:0}}).forEach(
    function(x){
        if(x.cnum > 3){
            y = {}; 
            y._id = x.xxx;
            y.cd = x.cd;
            db.table4.insert(y);
            print(x.xxx);
            print(x.cnum);
        }
    }
)

 

在linux环境之下js脚本

>mongo clean.js

posted on 2016-09-29 13:50  hrbust_09zhangyabin  阅读(487)  评论(0编辑  收藏  举报