mongoDB实战聚合管道--$unwind
Posted 陈晓婵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
实例讲解:
"_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的值不同外,其他的值都是相同的.
以上是关于mongoDB实战聚合管道--$unwind的主要内容,如果未能解决你的问题,请参考以下文章
在 MongoDB 的聚合管道中获取 $group 之后的输入文档中的字段