db.c_engine_col.aggregate( [ {"$match":{"local_create_time" : {"$gt":"2018-11-10", "$lt":"2018-11-20"}}}, // 篩選條件 { "$group":{"_id":"$serialno", "maxstep":{"$max":"$stepCode"}, "keys":{"$push":"$$ROOT"}} // 分組計算 maxstep, 併合並全部數據 }, {"$unwind":"$keys"}, // 解開數據 {"$project":{"_id":1, "maxstep":1, "keys.key":1, "keys.serialno":1, "keys.stepCode":1, "keys.value":1, "diff":{"$eq":["$maxstep","$keys.stepCode"]}}}, // 增長狀態位 {"$match":{"diff":true}}, // 根據狀態位篩選 stepcode==maxstep {"$project":{"_id":1,"keys.serialno":1 , "keys.key":1, "keys.stepCode":1, "keys.value":1}}, // 提取少許字段 { "$group":{"_id":"$keys.serialno", "key_value_arr":{"$push": "$$ROOT"} } // 併合並全部篩選後的數據 } ])