$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"}
}
转载来源:https://blog.csdn.net/chenxiaochan/article/details/73771879