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,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
教程和官网文档地址
封装饼图方法
//定义绘图方法
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')})