美文网首页
mongodb的aggregate

mongodb的aggregate

作者: firststep | 来源:发表于2017-12-18 10:54 被阅读0次

前奏:首先接触到mongodb的时候总是感觉不如sql语言用着舒服,但是当你用的熟悉了会发现其实语法都是差不多的。sql元的逻辑性更强些,而mongodb这些nosql语言则更加灵活。

一、mongodb常用到的就是聚合函数,首先的例子是根据创建时间聚合过滤出年份为2017年,月份为12月的数据。其中“year_data”是自己定义的年份所显示的字段名,name和sex是设置显示这连个字段。

match:用于过滤数据,只输出符合条件的文档。

db.getCollection('表名').aggregate([
    { 
        $project: { 'year_data': {$year: "$createdAt"},'month_data': {$month: "$createdAt"}, 'name':1, sex: 1}},
        {$match: {"year_data": 2017,  "month_data" : 12}
    }
])

二、显示条数limit。

由于在真正的项目开发中分页是必须会用到的,因为不可能让用户一页把所有的数据显示完。所以我们就会用到limit限制条数。

db.getCollection('表名').aggregate([
    { 
        $project: { 'year_data': {$year: "$createdAt"},'month_data': {$month: "$createdAt"}, 'name':1, sex: 1}},
        {$match: {"year_data": 2017,  "month_data" : 12},
        {$limit: 10}
    }
])

这样设置就会显示一页显示10条数据。

三、skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。

虽然limit可以控制一页显示多少条数据,但是如何区分那一页还是一个需要解决的问题。而skip就可以帮我们很好的解决这个问题。

db.getCollection('表名').aggregate([
    { 
        $project: { 'year_data': {$year: "$createdAt"},'month_data': {$month: "$createdAt"}, 'name':1, sex: 1}},
        {$match: {"year_data": 2017,  "month_data" : 12},
        {$skip: 10},
        {$limit: 10}
        
    }
])

这样查询数据的时候就是跳过前十条记录再查询十条记录,也就是11-20条。也就是第二页。这样就做到了分页的效果。

四:sort:将输入文档排序后输出。

由于再做分页的时候不能随便查询数据,需要按照一定的顺序排列然后进行一些过滤等操作。这样才能保证数据的真实性。

db.getCollection('表名').aggregate([
  { 
      $project: { 'year_data': {$year: "$createdAt"},'month_data': {$month: "$createdAt"}, 'name':1, sex: 1}},
      {$match: {"year_data": 2017,  "month_data" : 12},
      {$sort: {"yearData" => :-1, "monthData" : -1}}
      {$skip: 10},
      {$limit: 10}
      
  }
])

-1降序,1为升序。sort需要在skip,limit之前。因为需要先排序好再进行操作。

相关文章

  • mongodb的聚合

    mongodb的聚合 aggregate() 方法 MongoDB中聚合的方法使用aggregate() 语法 a...

  • 学习MongoDB(聚合)

    aggregate() MongoDB中聚合的方法使用aggregate()。aggregate() 方法的基本语...

  • mongodb aggregate

    mongodb高级特性aggregate,aggregate类似stream的处理方式,数据经过多级处理,最终输出...

  • mongodb的aggregate

    目的是找到满足一定条件的house被不通用户关注的用户列表 house-user: house: aggregat...

  • mongodb的aggregate

    前奏:首先接触到mongodb的时候总是感觉不如sql语言用着舒服,但是当你用的熟悉了会发现其实语法都是差不多的。...

  • Mongodb 的高级查询

    关键词:mongodb, mongo, project, group, aggregate, 聚合管道, 高级查询...

  • mongoDB聚合管道

    MongoDB 聚合 MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回...

  • mongodb aggregate 聚合

    按包名分组, 统计每个包名的uuid数量,按数量大小倒叙排列 或者这样: 同时使用and or 比较经典的案例:大...

  • MongoDB聚合aggregate

    数据准备 $group 查询每个职位的总工资:db.emps.aggregate([{"$group":{_id:...

  • mongodb aggregate 实践

    这段时间公司的项目业务改动,原来用的数据库是mysql,最近打算把部分业务相关的数据存在mongodb,我需要做的...

网友评论

      本文标题:mongodb的aggregate

      本文链接:https://www.haomeiwen.com/subject/ftipwxtx.html