【mongoDB实战】聚合管道–$unwind

【mongoDB实战】聚合管道–$unwindunwind 将文档中的某一个数组类型字段拆分成多条 每条包含数组中的一个值 在做项目的时候碰上了这样的需求 实例讲解 id ObjectId 5951c5de567e name 陈晓婵 address 北京朝阳区 weekday 1

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














版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/228827.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午6:06
下一篇 2026年3月16日 下午6:07


相关推荐

  • iis由于权限不足无法读取配置文件_iis500内部服务器错误

    iis由于权限不足无法读取配置文件_iis500内部服务器错误Response对象错误’ASP0251:80004005’超过响应缓冲区限制此ASP页的执行造成响应缓冲区超过其配置限制。因为页面中数据较多,有上千条,导致出现“超过响应缓冲区限制。此ASP页的执行造成响应缓冲区超过其配置限制”。如果response.buffer=false这样设的话,可以查出,但是好慢。怎么解决?我们可以加大Buffer的缓冲区,办法是:先在服务里关闭i…

    2022年10月20日
    3
  • mysql字符串和数字的互相转换

    mysql字符串和数字的互相转换1.最简单的方式就是直接在字符串后面+0,就相当于直接把字符串转为数字类型了,下面可以看一下具体的操作,可以看到通过+0操作,成功将两个字符串转化为了数字,并得到了相加后的结果。2.使用CAST()函数,使用方式为CAST(valueAStype);,下面可以看一下具体的操作例子,通过如下sql语句查看结果:SELECTCAST(‘5.45’ASSIGNED);…

    2022年5月30日
    54
  • 如何产生ioexception_结合实例论述控制过程

    如何产生ioexception_结合实例论述控制过程IOCP结合AcceptEx实例

    2026年4月18日
    3
  • HDMI接口定义图

    HDMI接口定义图nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp TheHDMIPlugA nbsp below anHDMIconnec whichinclude TMDSdatachan 6pins thesecarryth

    2026年3月19日
    1
  • 浅谈安卓UI设计「建议收藏」

    浅谈安卓UI设计「建议收藏」用户界面在程序开发中十分重要,一个好的用户界面设计需要考虑到用户使用体验、是否美观方便等。在界面设计的过程中,需要考虑如何制作出UI界面,怎么样控制UI界面两大块。这里先放上之前我们UI作业的截图:本文主要介绍通过两种方式来进行界面设计:1、通过xml文件进行界面设计2、通过代码控制进行界面设计一、…

    2022年6月16日
    31
  • Module build failed (from ./node_modules/eslint-loader/index.js)

    Module build failed (from ./node_modules/eslint-loader/index.js)错误信息:D:\study\vue\vuesaxvuejs-210\vuesaxvuejs-210>npmrunserve>vuesax-vuejs-dashboard-admin-template@2.1.0serveD:\study\vue\vuesaxvuejs-210\vuesaxvuejs-210>vue-cli-serviceserveI…

    2022年6月18日
    36

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号