• 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

  • 相关阅读:
    mybatis连接MySQL8.0出现的问题
    zqsb项目中发现没有getMSSVideoList
    idea快速实现接口的方法
    鸟枪换炮---IDEA
    IDEA的使用---常用的快捷键
    MQ消息队列
    token的主要用法?
    oracle中游标的使用
    乐观锁和悲观锁
    分布式系统的事务控制
  • 原文地址:https://www.cnblogs.com/zhangyabin---acm/p/5919659.html
Copyright © 2020-2023  润新知