MongoDB学习--高级查询 [聚合Group]

Group大约需要一下几个参数。

  1. key:用来分组文档的字段。和keyf两者必须有一个
  2. keyf:可以接受一个javascript函数。用来动态的确定分组文档的字段。和key两者必须有一个
  3. initial:reduce中使用变量的初始化
  4. reduce:执行的reduce函数。函数需要返回值。
  5. cond:执行过滤的条件。
  6. finallize:在reduce执行完成,结果集返回之前对结果集最终执行的函数。可选的

测试数据

    //测试的数据
    db.stocks.insert({"day": "2010/10/03", "time": "2010/10/03 03:47:01 GMT-400", "price": 4.23});
    db.stocks.insert({"day": "2010/10/04", "time": "2010/10/04 11:28:39 GMT-400", "price": 4.27});
    db.stocks.insert({"day": "2010/10/03", "time": "2010/10/03 05:00:23 GMT-400", "price": 4.10});
    db.stocks.insert({"day": "2010/10/06", "time": "2010/10/06 05:27:58 GMT-400", "price": 4.30});
    db.stocks.insert({"day": "2010/10/04", "time": "2010/10/04 08:34:50 GMT-400", "price": 4.01});

测试要执行的GROUP程序代码

db.runCommand({"group": {
    "ns": "stocks",
    "key": "day",
    "initial": {"time": 0},
    "$reduce": function(doc, prev) {
        if (doc.time > prev.time) {
            prev.price = doc.price;
            prev.time = doc.time;
        }
    }
}});

执行之后的结果

    {
        "retval" : [
            {
                "time" : 0
            }
        ],
        "count" : 5,
        "keys" : 1,
        "ok" : 1
    }
时间: 2024-08-09 10:35:43

MongoDB学习--高级查询 [聚合Group]的相关文章

mongodb学习(五) 查询

1. 按条件查询: db.users.find({"name":"MM1"}) 2.find的第二个参数可以指定要返回的字段:这里1 表示要显示的字段,0 表示要剔除的字段 db.users.find({"name":"MM1"},{"name":1,"age":1}) db.users.find({"name":"MM1"},{"nam

MongoDB学习笔记(查询)

1.  基本查询:    构造查询数据.    > db.test.findOne()    {         "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"),         "name" : "stephen",         "age" : 35,         "genda" : "male",      

【转】MongoDB学习笔记(查询)

原文地址 MongoDB学习笔记(查询) 基本查询: 构造查询数据. > db.test.findOne() { "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"), "name" : "stephen", "age" : 35, "genda" : "male", "email" : "[em

MongoDB的使用学习之(六)MongoDB的高级查询之条件操作符

此文分为两点,主要是在第二点--java 语法,但是按顺序必须先把原生态的语法写出来 (还有一篇文章也是不错的:MongoDB高级查询用法大全(包含MongoDB命令语法和Java语法,其实就是我整理这篇文章的理想模式,阿哈):http://www.cnblogs.com/t2xingzhe/p/3555268.html) 一.javascript语法(原生态语法) 此部分转载自http://blog.csdn.net/u013339851/article/details/23600299 1.

MongoDB学习笔记-05 聚合

MongoDB除了基本查询功能之外,还有强大的聚合工具,其中包括:count().distinct().group().mapreduce. 计数函数count count是最简单的聚合工具,用于返回文档的数量: >db.user.count() // 返回集合user的个数 传递查询文档时,则计算查询结果的数量: >db.user.count({"age":{"$lt":20}}) // 返回年龄小于20岁的用户数 该函数对于分页时的总数非常有必要 去

mongodb学习之:聚合

@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align: justify; font-family: "Times New Roman"; font-size: 10.5pt; }p.p { margin: 5pt 0pt; text-align

Oracle高级查询之GROUP BY

对于group by 的方式不再累赘,高级方式如下案例. 参考老师文章:http://blog.csdn.net/fu0208/article/details/7183258,向老师致敬,辛苦了 为了方便大家学习和测试,所有的例子都是在Oracle自带用户Scott下建立的.所用emp表, 如果没有此表请参考文章:http://blog.csdn.net/xiaokui_wingfly/article/details/43957003中拷贝 现在客户的需求是统计部门中每种工作的工资总额,最后还需

PHP操作Mongodb之高级查询篇

本文主要讲解PHP中Mongodb的除了增删改查的一些其他操作. 在PHP操作Mongodb之增删改查篇中我们介绍了PHP中Mongodb的增加.删除.修改及查询数据的操作.本文主要是将查询时用到的高级知识跟大家分享下. 1.查询时的排序 在关系型数据库的查询中,往往会用到排序.例如时间倒序,点击率升序啦等等.在Mongodb的查询中,也有排序功能的. 语法格式: $db->find()->sort(array('age' => 1));    //按age字段升序排序.1为升序,-1为

MongoDB学习笔记(查询)【转】

1.  基本查询:    构造查询数据.    > db.test.findOne()    {         "_id" : ObjectId("4fd58ecbb9ac507e96276f1a"),         "name" : "stephen",         "age" : 35,         "genda" : "male",