zoukankan      html  css  js  c++  java
  • 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后条件,是很重要的

    多多练习   , 我还差点   

  • 相关阅读:
    并查集
    关于一些位运算的小记
    用ST解决RMQ问题
    寒假作业_4
    H
    卢卡斯 组合数
    并查集
    G
    F
    E
  • 原文地址:https://www.cnblogs.com/weifeng-888/p/10243211.html
Copyright © 2011-2022 走看看