
/*=============================================================================================
	author:ZhaoJun
	version:1.2
	email:2732810281@qq.com
=============================================================================================*/


//严格模式
/*-------------------------------------------------------------------------------------------*/	
'use strict';
/*-------------------------------------------------------------------------------------------*/
    

// 测试操作
/*-------------------------------------------------------------------------------------------*/	
    class mongo 
    {
        static com(param)
        {
            param.where=param.where?param.where:{}
            param.db=param.db?param.db:'main'
        }

        static agg(param)
        {
            mongo.con(param)
            param.display=param.display?param.display:{}
            return $DbMongo.$con[param.db].collection(param.table)
            .aggregate
            (
                param.where,
                {
                    projection:param.display
                }
            )
        }

        static select(param)
        {
            mongo.con(param)
            param.display=param.display?param.display:{}
            let cur= $DbMongo.$con[param.db].collection(param.table)
            .find
            (
                param.where,
                {
                    projection:param.display
                }
            )
            if(param.page)
            {
                let limit =param.limit?param.limit.limit:20
                cur.skip(param.page.page*limit).limit(limit)
            }
            if(param.group)
            {
                cur.group(param.group.group)
            }
            cur.toArray()
            return cur;
        }

        static selectOne(param)
        {
            mongo.con(param)
            param.display=param.display?param.display:{}
            return $DbMongo.$con[param.db].collection(param.table)
            .find
            (
                param.where,
                {
                    projection:param.display
                }
            ).toArray()
        }

        static update(param)
        {
            mongo.com(param)
            return $DbMongo.$con[param.db].collection(param.table)
            .update
            (
                param.where,
                param.field
            )
        }

        static remove(param)
        {
            mongo.com(param)
            return $DbMongo.$con[param.db].collection(param.table)
            .delete
            (
                param.where
            )
        }

        static insert(param)
        {
            mongo.com(param)
            return $DbMongo.$con[param.db].collection(param.table)
            .insert
            (
                param.field
            )
        } 

    }
/*-------------------------------------------------------------------------------------------*/    
module.exports=mongo;