开发者社区> 问答> 正文

Sequoiadb 聚集的问题!

如果我的数据库里存储了这样几条记录

{ library: ‘foo’,

  books: 

    { 

      name: ‘harry potter’,

      year: 2005,

      price: 70 

    }

}

{ library: ‘foo’,

  books: 

    {

      name: 'Game of Thrones’,

      year: 2012,

      price: 80,

    }

}

{ library: ‘foo’,

  books: 


  {

      name: ‘jobs’,

      year: 20012,

      price: 120,

    }


}

怎样用聚合(aggregate)命令计算'foo'图书馆的所有三本书的平均价格(avg. price)?

展开
收起
a123456678 2016-06-28 18:04:56 2118 0
1 条回答
写回答
取消 提交回答
  • db.transport.cars.aggregate(
    
    db.foo.bar.aggregate({$match:{library:'foo'}},{$project:{library:1,'books.price':1}},
    
    {$group:{_id:’$library’, average:{$avg:’$books.price’},library_name:{$first:’$library’}}})
    
    返回应该类似于
    
    { ‘library_name’:’foo’, ‘average’ : 90 }
    
    
    $match 是 select condition
    
    $project 是选择输出那些结果
    
    $group 对结果集分组
    
    $avg 求结果
    
    $first输出第一个记录的字段

    手写的命令,没实测,你可以自己在数据库插入几条数据试试看。

    2019-07-17 19:48:36
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_冯慧媛_GIS地理信息-postgres在时空大数据方面的应用 立即下载
拥抱时空大数据-阿里云时空数据库 立即下载
PostgresChina2018_梅白帆_PostGIS在传统行业中的应用简介 立即下载