mongodb学习6--js操做mongodb

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

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

其中storage表示的就是数据库的大小,显示出的数字的单位是字节,所以若是须要转换单位为KB须要除以1024数据库


2. 获取MongoDB中collectionspa

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

 

二,js操做实例:code

1,遍历一个mongo库下全部的表blog

// 获取一个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脚本ci

>mongo clean.jsrem

相关文章
相关标签/搜索