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

语法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}}])

19 MongoDB高级 - $unwind相关推荐

  1. MongoDB高级——安全

    超级管理员 为了更安全的访问mongodb,需要访问者提供用户名和密码,于是需要在mongodb中创建用户 采用了角色-用户-数据库的安全管理方式 常用系统角色如下: root:只在admin数据库中 ...

  2. mongodb中unwind操作

    写入第一条数据 db.mytestcol.insert({user_id:"A_id",bonus:[{ type:"a" ,amount:1000 },{ t ...

  3. mongodb aggregate $unwind

    首先了解一下这个单词啥意思,知道的就不说了,不知道的咱先了解一下. 那么mongo的这个 $unwind 命令的作用:拆分(unwind)可以将数组中的每一个值拆分为单独的文档. 示范一下怎么拆分 先 ...

  4. Windows安装MongoDB

    一.简介 MongoDB 是一个基于分布式 文件存储的NoSQL数据库 由C++语言编写,运行稳定,性能高 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案 查看官方网站 MongoDB特点 模 ...

  5. MongoDB的C#驱动程序教程(译)

    草案版本(日期为2010-09-30) 该文件是一个草案版本.虽然我们认为这里提供的信息是非常准确的,它是可能的,它可能会改变未成年人的方式,因为我们吸收用户的反馈意见,并继续执行 C#驱动程序. 1 ...

  6. MongoDB 查询优化原则

    1. 在查询条件.排序条件.统计条件的字段上选择创建索引,可以显著提高查询效率.2. 用$or时把匹配最多结果的条件放在最前面,用$and时把匹配最 少 结果的条件放在最前面.3. 使用limit() ...

  7. 科技公司最常用的50款开源工具,提升你的逼格~

    点击关注上方"视学算法",设为"置顶或星标",第一时间送达技术干货. 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品 ...

  8. 科技公司最爱的 50 款开源工具,你都用过吗?

    来源 | GitHubDaily 本文介绍了多款知名的开源应用软件,科技公司可以用它们来管理自己的 IT 基础设施.开发产品. 过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自 ...

  9. 最受IT公司欢迎的50款开源软件

    过去十年间,许多科技公司已开始畅怀拥抱开源.许多公司使用开源工具来运行自己的 IT 基础设施和网站,一些提供与开源工具相关的产品和服务,或基于开源工具而建的产品和服务,还有一些在为开源代码贡献代码或支 ...

最新文章

  1. R - history
  2. 互联网思维-标签思维(2)
  3. 已开源!谷歌将AutoML应用到Transformer架构,实现机器翻译最佳性能
  4. throw()使用小结
  5. ueditor上传图片回调_springboot+mybatis+oss整合ueditor
  6. 计蒜客2019蓝桥杯省赛 B 组模拟赛(一)轻重搭配|
  7. C++ shared_ptr make_shared是什么意思
  8. 用electron实现播放flash小游戏
  9. 无线摄像头服务器关闭,监控摄像头服务器停止
  10. C++随机生成中文姓名
  11. C++中begin、end、front、back函数的用法
  12. After 500:写500篇博客其实和写一篇是一样的
  13. Ubuntu20.04下安装nvidia驱动
  14. 随笔-学习编程有没有必要做笔记?如何做笔记?
  15. 微信会员卡展示条形码
  16. pic单片机c语言读eeprom,PIC单片机应用专题二内外EEPROM读写..doc
  17. android微信7,微信7.0安卓版之初体验
  18. 阿米洛键盘使用手册2021-02-22
  19. 如何去开发一个webApp
  20. 中职学生计算机学情分析报告,中职学生学情分析及对策

热门文章

  1. 因疫情不能按时还房贷怎么办?
  2. 快用苹果助手的免流量活动,你造?
  3. java中npe问题_Java中几种常见的NPE问题
  4. microsoft edge浏览器常用的快捷键
  5. 会话固定原理与通信步骤说明
  6. 计算机无法识别y66,ffmpeg无法识别的选项'调整'(ffmpeg Unrecognized option 'tune')
  7. matlab标注legend居中,matlab中legend的任意标注
  8. Linux如何用find命令查找文件
  9. mysql nvl nvl2_nvl nvl2 case 分组函数 | 学步园
  10. iOS 多线程和GCD(Grand Central Dispath) 教程 (一)