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

上一篇:第一篇 Python安装与环境变量的配置


下一篇:Akka(16): 持久化模式:PersistentFSM-可以自动修复的状态机器