$limit、$skip、$unwind
2024-05-10 23:46:12
$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}}])
最新文章
- 实施Kubernetes可以实现多云架构安全
- python的import与from...import的不同之处
- 宽度,对齐方式的设置
- [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 选择什么来衡量
- hyper虚拟机下对centos进行动态扩容
- PHP读取数据库并按照中文名称进行排序实现代码
- 入门机器学习(十九)--推荐系统(Recommender Systems)
- Mybatisの常见面试题
- APP One Link ,android and ios qrcode merge as One QRCode and one short link
- hbase小版本升级
- Ubuntu下使用Atom将Markdown文件转换为PDF的一个异常
- 海思3559a资料目录整理
- 穿山甲(巨量引擎)广告接入
- git设置 mergetool为kdiff3
- 设计模式(十一)——树形结构:组合模式
- 集成测试和单元测试覆盖率合并
- 18.集合框架(Map集合,HashMap和Hashtable的区别,Collections(集合工具类),集合练习,模拟斗地主(洗牌,发牌,看牌))
- 官方scratch3.0正式发布,全面支持移动设备在线编程!
- 复杂大脑网络的结构和功能
- 如何用VR改变驾驶陋习?
热门文章
- Confluence 6 修改警告的阈值和表现
- 【mybatis】mybatis自定义动态字段查询,mybatis实现动态字段查询,如果某个条件为null,则不查询某个字段,否则就查询某个字段...
- 移动端页面按手机屏幕分辨率自动缩放的js
- 编码规范-html.md
- 《Web异步与实时交互——iframe AJAX WebSocket开发实战》—— 1.4 内容安排
- Anaconda 安装 ml_metrics package
- Android Studio 代码混淆
- mysql 长时间连接没操作,断开连接
- 游三大界后感(付照片)
- Nginx的TCP运行时健康检查