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

相關文章
相關標籤/搜索