一,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