专栏首页猿天地MongoDB aggregation $unwind

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" }

本文分享自微信公众号 - 猿天地(cxytiandi)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • jsp基础知识(基本的语法及原理)

         jsp 语法分为三种不同的类型: (1)  编译器指令: 类如: <%@ page import="java.io.*"%> (2)  脚本语法:  ...

    Gxjun
  • Java学习之约瑟夫环的两中处理方法

    1 package day_2; 2 3 import java.util.Scanner; 4 5 /** 6 * @author Adm...

    Gxjun
  • Why Spring Boot

    本文介绍将各种Spring的配置方式,帮助您了解配置Spring应用的复杂性。 Spring是一个非常受欢迎的Java框架,它用于构建web和企业应用。不像许多...

    程序猿DD
  • HDU----(2157)How many ways??(快速矩阵幂)

    How many ways?? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32...

    Gxjun
  • hdu----(1402)A * B Problem Plus(FFT模板)

    A * B Problem Plus Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536...

    Gxjun
  • Base:Acid的替代方案

    作者:DAN PRITCHETT 译者:java达人 来源:https://queue.acm.org/detail.cfm?id=1394128(点击阅读原...

    java达人
  • hdu 3367(Pseudoforest ) (最大生成树)

    Pseudoforest Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/6553...

    Gxjun
  • java版本的学生管理系统

    1 import java.awt.BorderLayout; 2 import java.awt.Color; 3 import java.awt...

    Gxjun
  • java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法

              在进行jdbc直接操作数据库时    :               我们需要对该工程进行一次导包(引入"msbase.jar" "mssq...

    Gxjun
  • java 与 python 的并发争论

    有一天,java遇到了python兄弟,调侃道:“我听一位刚学python的老伙计道,你这并发包很不好用呀。” “怎么不好用了,我有Threading模块,只...

    java达人

扫码关注云+社区

领取腾讯云代金券