flask_ Mongodb 的语法-排序

MOngoDB的排序是挺有用的   ,跟MySQL有明显的区别 。。

它的原生语法的第一个参数为条件限定,第二个参数为排序字段

db.news.find({},{'_id':1})   #1是升序   -1是降序

pymongo的写法为:

db.news.sort([('_id',-1)])

 

MongoDB的进阶使用,分组操作

db.collection.aggregate([array]);

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

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

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

同理,sort,skip,limit也是同样的道理:

{_id:1,name:"a",status:1,num:1} ,{_id:2,name:"a",status:0,num:2},{_id:3,name:"b",status:1,num:3}

 

以下是我综合列出来的一些实例,

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

db.collection.aggregate([{$group:{_id:"$name",count:{$sum:1},total:{$sum:"$num"}}])

应用二:统计status =1 的那么的数量:

db.collection.aggregate([

{$match:{status:1}},

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

])

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

db.collection.aggregate([

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

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

])

 

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

db.collection.aggregate([

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

])

$project 该操作符很简单

db.collections.aggregate([

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

])

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

$unwind

这个操作符可以将一个数组的文档拆分为多条文档,在特殊条件下有用,这个还没有研究过 ~~·

 

以上基本可以实现大部分统计了,group前条件,group后条件,是很重要的

多多练习   , 我还差点   

posted @ 2019-01-09 11:15  胡先生爱大家  阅读(421)  评论(0编辑  收藏  举报