译者:飞龙

来源:Aggregation

如果你需要从一个模型中获取一些聚合值,你可以使用Model.aggregate()。下面通过一个例子来展示:

Person.aggregate({ surname: "Doe" }).min("age").max("age").get(function (err, min, max) {console.log("The youngest Doe guy has %d years, while the oldest is %d", min, max);
});

可以传递一个含有属性的Array来选择仅仅保留一小部分属性。方法也会接收一个Object来定义条件。

下面是一个展示如何使用.groupBy()的例子:

// 和 "select avg(weight), age from person where country='someCountry' group by age;" 相同
Person.aggregate(["age"], { country: "someCountry" }).avg("weight").groupBy("age").get(function (err, stats) {// stats 是一个数组,每个记录都有 'age' 和 'avg_weight' 属性
});

基本的 .aggregate() 方法

  • limit():你可以传递一个数值作为个数,或者两个数值分别作为偏移和个数
  • order():和Model.find().order()相同

额外的 .aggregate() 方法

  • min
  • max
  • avg
  • sum
  • count(它有一个快捷方式 - Model.count

有更多的聚合函数是依赖于驱动的(比如数学函数)。

orm2 中文文档 8. 聚合相关推荐

  1. orm2 中文文档 6. 查找记录

    译者:飞龙 来源:Finding items find 查找匹配标准的记录,可以链式查询(见下文): Person.find({status:'active'}, function(err, resu ...

  2. orm2 中文文档 5. 同步和删除模型

    译者:飞龙 来源:Syncing and dropping models 同步是一项功能方法,可以在数据库里为你的模型和关联创建所需的表来工作.现存的表并不会被替换,它们只会在不存在的时候被创建. 同 ...

  3. orm2 中文文档 4.3 extendsTo(一对一关系)

    译者:飞龙 来源:extendsTo 你可能想把可选的属性分割到另一个表中.每个扩展都会是一个新的表,其中每一行的唯一标识符是主模型实例的id. 例如: var Person = db.define( ...

  4. orm2 中文文档 4.2 hasMany(多对多关系)

    译者:飞龙 来源:hasMany hasMany 是多对多的关系(包括连接表). 例如:Patient.hasMany('doctors', Doctor, { why: String }, { re ...

  5. orm2 中文文档 4.1 hasOne(多对一关系)

    译者:飞龙 来源:hasOne hasOne关联是一种多对一的关系,意思是你定义的模型可以有多个实例指向一个其它的实例(所属相同模型或不同模型). 用法 Animal.hasOne(associati ...

  6. orm2 中文文档 3.3 模型钩子

    译者:飞龙 来源:Model Hooks 如果你想要监听发生在模型实例上的事件,你可以附带一个函数,它会在发生时调用. 现在支持下面这些事件: afterLoad:(无参数)加载和准备所用实例之后: ...

  7. orm2 中文文档 3.2 模型验证器

    译者:飞龙 来源:Model Validations Enforce模块用于验证数据.对于使用以前的验证器的用户,还可以继续使用,它们中的一部分整合到了enforce,剩余部分还没有.推荐你开始使用o ...

  8. orm2 中文文档 3.1 模型属性

    译者:飞龙 来源:Model Properties 模型和一些关联具有一个或多个属性,每个属性有类型以及一些可选设置,你可以自行选择它们(或使用默认设置). 类型 受支持的类型是: text:文本字符 ...

  9. orm2 中文文档 3. 定义模型

    译者:飞龙 来源:Defining Models 在[连接](1. Connecting to Database.md)之后,你可以使用连接对象(db)来定义你的模型.你需要指定模型的名称,一个用于描 ...

最新文章

  1. CS224n Assignment 2
  2. vi/vim 中批量在行插入或删除指定字符
  3. leetcode 316. Remove Duplicate Letters | 316. 去除重复字母(单调栈解法)
  4. linux内核函数open源码,open()在Linux内核的实现(1)-基本实现
  5. java string 精度_Java 中的浮点数取精度方法
  6. python读取excel日期和时间数据_python 在excel文件中写入date日期数据,以及读取excel日期数据,如何在python中正确显示date日期。...
  7. DragControl
  8. union中结构体整合后字节对齐问题
  9. 数据结构c语言版第4版答案,严蔚敏版数据结构(C语言版)参考答案第四、五章
  10. 水下无线光通信关键技术与未来展望
  11. DM420步进电机驱动器
  12. 大数据、物联网技术、物联网卡,对我们生活带来的影响
  13. 纤维水泥板及配件建筑材料英国UKCA认证—EN 492
  14. LPC55S69开发笔记
  15. IP、MAC地址,交换机路由器,ARP、NAT协议串讲
  16. web3.js的provider
  17. 智能指针shared_ptr、unique_ptr、weak_ptr
  18. web基础(一)--------标签
  19. Zabbix4.4 技术解决方案(实战篇) 监控 Nginx 日志 统计WEB网站PV和UV
  20. 解决“npm、node不是内部或外部命令,也不是可运行的程序或批处理文件的方法记录

热门文章

  1. python爬虫爬取图片代码_python爬虫实战 爬取天极图片
  2. python算法应用(五)——搜索与排名1(连接数据库及简单排名)
  3. ROS 教程之 network:多台计算机之间网络通信(1)
  4. java老年代_Java新生代老年代的划分及回收算法
  5. mysql中语句块当事务,MySQL事务与隔离级别
  6. 解析java程序设计第二版答案,解析Java程序设计答案
  7. 【重难点】【RabbitMQ 02】如何避免消息重复投递和消息重复消费、如何防止消息丢失、如何保证消息的顺序性、如何保证消息队列的可用性
  8. 【小项目】SSM 实现单表 CRUD
  9. 【高校宿舍管理系统】第六章 用户管理和年级管理
  10. Serializable序列化