MongoDB aggregation $unwind
时间:2022-05-06
本文章向大家介绍MongoDB aggregation $unwind,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
转载:猿天地 链接:http://cxytiandi.com/blog/detail/2940
$unwind的作用是将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
官方文档地址:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/
比如文章信息有标签tags,值有java,mongodb,spring
{
"_id": 1001,
"tags": [
"java",
"mongodb",
"spring"
]
}
假如我们要将tags拆分显示,也就是每个tag都显示成一条单独的数据
db.article_info.aggregate( { $unwind : "$tags" })
结果如下:
{ "_id" : 1001, "tags" : "java" }
{ "_id" : 1001, "tags" : "mongodb" }
{ "_id" : 1001, "tags" : "spring" }
假如我们的需求是统计每个tag出现的次数
这个时候就需要用到先将$unwind tags拆分,然后根据具体的tag来做分组统计
> db.article_info.aggregate(
... { $unwind : "$tags" },
... { $group : { "_id" : "$tags", "count" : { $sum : 1 } } },
... { $project : { "tag" : "$_id", "count" : 1 } }
... )
结果如下:
{ "_id" : "spring", "count" : 1, "tag" : "spring" }
{ "_id" : "mongodb", "count" : 1, "tag" : "mongodb" }
{ "_id" : "java", "count" : 1, "tag" : "java" }
- 贪心算法(二)——一般背包问题
- 贪心算法(三)——最佳合并模式
- 贪心算法(四)——最小代价生成树
- 贪心算法(五)——迪杰斯特拉算法
- Tensorflow动态seq2seq使用总结
- 卷积神经网络中PET/CT图像的纹理特征提取
- 深入剖析Spring(四)——AOP
- Java并发编程的艺术(十二)——线程安全
- 用 LSTM 做时间序列预测的一个小例子
- Java并发编程的艺术(十一)——线程池(2)
- Java并发编程的艺术(十)——线程池(1)
- Tensorflow on Spark爬坑指南
- Boost asio 官方教程
- 0基础教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决Android Studio xml 格式化不自动换行的问题
- GitHub代码仓库服务的那些事
- Android之自定义实现BaseAdapter(通用适配器三)
- Android实现音乐播放器锁屏页
- android studio3.3.1代码提示忽略大小写的设置
- Ascgen2可以把图片变成文字的小工具
- 解决android studio卡顿,提升studio运行速度的方法
- Android物理键盘事件解析
- AndroidQ(10)分区存储完美适配方法
- (全局快捷键工具)Power Keys彻底提升码字效率?
- android自定义view实现钟表效果
- 教你如何用OpenVZ限制虚拟机硬盘IO速度
- Android自定义控件实现短信验证码自动填充
- android studio 3.6.1升级后如何处理 flutter问题
- Android项目迁移到AndroidX的方法步骤