MongoDb语法

#查看当前都有哪些数据库 > show dbs;

#查看都有哪些集合 > show collections

 #使用insert方法插入文档,以{}包注,文档是以键值对出现的,必须成对设置 > db.user.insert({"uid":1,"name":"luotianshuai","age":18,"salary":1})

 

2、查询

#通过find()方法进行查询

  • db.user.find()

 

 

删除文档

1、查询所有

#db.user.find() 如果括号内不加任何条件那么默认是显示所有的文档

2、查询条件

> db.user.find({"uid":1}) #这里指定条件 { "_id" : ObjectId("575f039f0c73a5a96e8f7c8f"), "uid" : 1, "name" : "luotianshuai", "age" : 18, "salary" : 1 }

3、删除文档

> db.user.remove({"uid":1}) WriteResult({ "nRemoved" : 1 })  #当removed为1的时候说明删除成功

4、清空集合

> db.user.remove({}) WriteResult({ "nRemoved" : 19 })

5、删除集合

> db.user.drop() true  #如果返回true说明删除成功

 

 

Mongo 进阶使用,分组操作

 

db.collection.aggregate([array]);

 

array可是是任何一个或多个操作符。

group和match的用法,使用过sqlserver,group的用法很好理解,根据指定列进行分组统计,可以统计分组的数量,也能统计分组中的和或者平均值等。

group之前的match,是对源数据进行查询,group之后的match是对group之后的数据进行筛选;

同理,sort,skip,limit也是同样的原理;

1 {_id:1,name:"a",status:1,num:1} 2 {_id:2,name:"a",status:0,num:2} 3 {_id:3,name:"b",status:1,num:3} 4 {_id:4,name:"c",status:1,num:4} 5 {_id:5,name:"d",status:1,num:5}

 

 

以下是示例:

应用一:统计name的数量和总数;

db.collection.aggregate([

  {$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}}

]);

应用二:统计status=1的name的数量;

db.collection.aggregate([

  {$match:{status:1}},

  {$group:{_id:"$name",count:{$sum:1}}}

]);

应用三:统计name的数量,并且数量为小于2的;

db.collection.aggregate([

  {$group:{_id:"$name",count:{$sum:1}},

  {$match:{count:{$lt:2}}}

]);

应用四:统计stauts=1的name的数量,并且数量为1的;

db.collection.aggregate([

  {$match:{status:1}},

  {$group:{_id:"$name",count:{$sum:1}}},

  {$match:{count:1}}

]);

 

多列group,根据name和status进行多列

db.collection.aggregate([

  {$group:{_id:{name:"$name",st:"$status"},count:{$sum:1}}}

]);

 

$project该操作符很简单,

db.collection.aggregate([

  {$project:{name:1,status:1}}

]);

结果是,只有_id,name,status三个字段的表数据,相当于sql表达式 select _id,name,status from collection

 

 

$unwind

这个操作符可以将一个数组的文档拆分为多条文档,在特殊条件下有用,本人暂没有进行过多的研究。

 

 

以上基本就可以实现大部分统计了,group前条件,group后条件,是重点。

 

 

 

 

 

 

 

 

 

 

ECharts

 

一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),底层依赖轻量级的矢量图形库 ZRender,提供直观,交互丰富,可高度个性化定制的数据可视化图表。

 

 

教程和官网文档地址

 

http://www.echartsjs.com

 

 

 

封装饼图方法

 

//定义绘图方法

    function show_source(dname,data){

        //初始化echarts,在data_summary内部绘图

        var source_chart = echarts.init(document.getElementById('data_summary'));

        //定义绘图配置

        var source_option = {

            //悬停提示配置

            tooltip:{

                //定义鼠标

                trigger:'item',

                //显示数据格式

                formatter:"{b}:{d}%"

            },

            //传递数据 传入来源名称

            legend:{

                data:dname

            },

            //传递具体数据

            series:[{

                //指定绘图类型

                type:'pie',

                //具体数据

                data:data

            }]

        }

        //将配置文件和绘图对象结合

        source_chart.setOption(source_option);

    }

 

 

Mongodb 进阶使用

 

模糊查询忽略大小写敏感

 

使用options参数指定值为 i

 

#在find()方法中,如果指定第二个参数options 为 i ,则忽略大小写

         = db.platform.find({'name':{'$regex':str(keyword),'$options':'i'}}).sort([('rank',1)])

 

 

Mongodb 进阶使用

 

模糊查询

 

原生sql  db.news.find({'title':/123/})

 

注意不要加引号,否则就是精准匹配

 

 

pymongo

 

db.news.find({'xxx':{'$regex':'xxx'}})

 

 

第二种方法(扩展)

 

使用re模块

 

import re

 

db.news.find({'xxx':re.compile('xxx')})

posted @ 2019-05-07 21:54  胡先生爱大家  阅读(399)  评论(0编辑  收藏  举报