$limit

  • 限制聚合管道返回的文档数
  • 例1:查询2条学生信息
db.stu.aggregate([{$limit:2}])

$skip

  • 跳过指定数量的文档,并返回余下的文档
  • 例2:查询从第3条开始的学生信息
db.stu.aggregate([{$skip:2}])
  • 例3:统计男生、女生人数,按人数升序,取第二条数据
db.stu.aggregate([{$group:{_id:'$gender',counter:{$sum:1}}},{$sort:{counter:1}},{$skip:1},{$limit:1}
])
  • 注意顺序:先写skip,再写limit
  • $unwind

    • 将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值

    语法1

    • 对某字段值进行拆分
    db.集合名称.aggregate([{$unwind:'$字段名称'}])
    
    • 构造数据
    db.t2.insert({_id:1,item:'t-shirt',size:['S','M','L']})
    
    • 查询
    db.t2.aggregate([{$unwind:'$size'}])
    

    语法2

    • 对某字段值进行拆分
    • 处理空数组、非数组、无字段、null情况
    db.inventory.aggregate([{$unwind:{path:'$字段名称',preserveNullAndEmptyArrays:<boolean>#防止数据丢失}
    }])
    
    • 构造数据
    db.t3.insert([
    { "_id" : 1, "item" : "a", "size": [ "S", "M", "L"] },
    { "_id" : 2, "item" : "b", "size" : [ ] },
    { "_id" : 3, "item" : "c", "size": "M" },
    { "_id" : 4, "item" : "d" },
    { "_id" : 5, "item" : "e", "size" : null }
    ])
    
    • 使用语法1查询
    db.t3.aggregate([{$unwind:'$size'}])
    
    • 查看查询结果,发现对于空数组、无字段、null的文档,都被丢弃了
    • 问:如何能不丢弃呢?
    • 答:使用语法2查询
    db.t3.aggregate([{$unwind:{path:'$sizes',preserveNullAndEmptyArrays:true}}])
    

最新文章

  1. 实施Kubernetes可以实现多云架构安全
  2. python的import与from...import的不同之处
  3. 宽度,对齐方式的设置
  4. [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 选择什么来衡量
  5. hyper虚拟机下对centos进行动态扩容
  6. PHP读取数据库并按照中文名称进行排序实现代码
  7. 入门机器学习(十九)--推荐系统(Recommender Systems)
  8. Mybatisの常见面试题
  9. APP One Link ,android and ios qrcode merge as One QRCode and one short link
  10. hbase小版本升级
  11. Ubuntu下使用Atom将Markdown文件转换为PDF的一个异常
  12. 海思3559a资料目录整理
  13. 穿山甲(巨量引擎)广告接入
  14. git设置 mergetool为kdiff3
  15. 设计模式(十一)——树形结构:组合模式
  16. 集成测试和单元测试覆盖率合并
  17. 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))
  18. 官方scratch3.0正式发布,全面支持移动设备在线编程!
  19. 复杂大脑网络的结构和功能
  20. 如何用VR改变驾驶陋习?

热门文章

  1. Confluence 6 修改警告的阈值和表现
  2. 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...
  3. 移动端页面按手机屏幕分辨率自动缩放的js
  4. 编码规范-html.md
  5. 《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 1.4 内容安排
  6. Anaconda 安装 ml_metrics package
  7. Android Studio 代码混淆
  8. mysql 长时间连接没操作,断开连接
  9. 游三大界后感(付照片)
  10. Nginx的TCP运行时健康检查