首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MongoDB aggregation $unwind

MongoDB aggregation $unwind

作者头像
猿天地
发布2018-04-03 12:33:33
发布2018-04-03 12:33:33
1.7K00
代码可运行
举报
文章被收录于专栏:猿天地猿天地
运行总次数:0
代码可运行

转载:猿天地 链接:http://cxytiandi.com/blog/detail/2940

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

官方文档地址:https://docs.mongodb.com/manual/reference/operator/aggregation/unwind/

比如文章信息有标签tags,值有java,mongodb,spring

代码语言:javascript
代码运行次数:0
运行
复制
{
    "_id": 1001,
    "tags": [
        "java",
        "mongodb",
        "spring"
    ]
}

假如我们要将tags拆分显示,也就是每个tag都显示成一条单独的数据

代码语言:javascript
代码运行次数:0
运行
复制
db.article_info.aggregate( { $unwind : "$tags" })

结果如下:

代码语言:javascript
代码运行次数:0
运行
复制
{ "_id" : 1001, "tags" : "java" }
{ "_id" : 1001, "tags" : "mongodb" }
{ "_id" : 1001, "tags" : "spring" }

假如我们的需求是统计每个tag出现的次数

这个时候就需要用到先将$unwind tags拆分,然后根据具体的tag来做分组统计

代码语言:javascript
代码运行次数:0
运行
复制
> db.article_info.aggregate(
... { $unwind : "$tags" },
... { $group : { "_id" : "$tags", "count" : { $sum : 1 } } },
... { $project : { "tag" : "$_id", "count" : 1 } }
... )

结果如下:

代码语言:javascript
代码运行次数:0
运行
复制
{ "_id" : "spring", "count" : 1, "tag" : "spring" }
{ "_id" : "mongodb", "count" : 1, "tag" : "mongodb" }
{ "_id" : "java", "count" : 1, "tag" : "java" }
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 猿天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档