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