• 【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的值不同外,其他的值都是相同的.



  • 相关阅读:
    基于 HTML5 WebGL 构建智能数字化城市 3D 全景
    基于 H5 + WebGL 实现 3D 可视化地铁系统
    基于 HTML5 WebGL 的 3D 科幻风机
    基于 HTML5 + WebGL 的太阳系 3D 展示系统
    HT Vue 集成
    基于 HTML5 + WebGL 的地铁 3D 可视化系统
    基于 HTML5 WebGL 和 VR 技术的 3D 机房数据中心可视化
    String、StringBuffer和StringBuilder的区别
    Python--Numpy基础
    python中的next()以及iter()函数
  • 原文地址:https://www.cnblogs.com/chenxiaochan/p/7253381.html
Copyright © 2020-2023  润新知