zoukankan      html  css  js  c++  java
  • 【mongoDB实战】聚合管道--$unwind

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

    在做项目的时候碰上了这样的需求:


    实例讲解:

    {
        "_id" : ObjectId("5951c5de567ebff0d5011fba"),
        "name" : "陈晓婵",
        "address" : "北京朝阳区",
        "weekday" : [ 
            1, 
            2, 
            3, 
            4, 
            5
        ]
    }

    对weekday进行拆分:


    db.getCollection('chenxiaochantest').aggregate(
     [
      {
         $unwind:"$weekday"
      }
     ]
    )

    拆分结果:

    /* 1 */
    {
        "_id" : ObjectId("5951c5de567ebff0d5011fba"),
        "name" : "陈晓婵",
        "address" : "北京朝阳区",
        "weekday" : 1
    }
    
    /* 2 */
    {
        "_id" : ObjectId("5951c5de567ebff0d5011fba"),
        "name" : "陈晓婵",
        "address" : "北京朝阳区",
        "weekday" : 2
    }
    
    /* 3 */
    {
        "_id" : ObjectId("5951c5de567ebff0d5011fba"),
        "name" : "陈晓婵",
        "address" : "北京朝阳区",
        "weekday" : 3
    }
    
    /* 4 */
    {
        "_id" : ObjectId("5951c5de567ebff0d5011fba"),
        "name" : "陈晓婵",
        "address" : "北京朝阳区",
        "weekday" : 4
    }
    
    /* 5 */
    {
        "_id" : ObjectId("5951c5de567ebff0d5011fba"),
        "name" : "陈晓婵",
        "address" : "北京朝阳区",
        "weekday" : 5
    }


    使用$unwind可以将weekday中的每个数据都被分解成一个文档,并且除了weekday的值不同外,其他的值都是相同的.


    实例讲解:

    {
        "_id" : ObjectId("5951ca15567ebff0d5011fbb"),
        "name" : "陈晓婵",
        "address" : "北京朝阳",
        "lunch" : [ 
            {
                "food" : "baozi",
                "fruit" : "taozi"
            }, 
            {
                "food" : "miaotiao",
                "fruit" : "xigua"
            }
        ]
    }

    对lunch进行拆分:

    db.getCollection('chenxiaochantest2').aggregate(
      [
        {
           $unwind:"$lunch"
        }
      ]
    )


    拆分结果:


    /* 1 */
    {
        "_id" : ObjectId("5951ca15567ebff0d5011fbb"),
        "name" : "陈晓婵",
        "address" : "北京朝阳",
        "lunch" : {
            "food" : "baozi",
            "fruit" : "taozi"
        }
    }
    
    /* 2 */
    {
        "_id" : ObjectId("5951ca15567ebff0d5011fbb"),
        "name" : "陈晓婵",
        "address" : "北京朝阳",
        "lunch" : {
            "food" : "miaotiao",
            "fruit" : "xigua"
        }
    }

    使用$unwind可以将lunch中的每个数据都被分解成一个文档,并且除了lunch的值不同外,其他的值都是相同的.



  • 相关阅读:
    引用传参
    VS2017 用MySQL Connector 链接 MySQL时 getString异常问题
    Matlab学习日记第3天
    Matlab学习日记第2天
    Matlab学习日记第1天
    c#加密解密方法
    DataGridView添加行号
    c#带参数数组链接数据库方法
    2021/5/27
    2021/5/14
  • 原文地址:https://www.cnblogs.com/chenxiaochan/p/7253381.html
Copyright © 2011-2022 走看看