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"} } // 并合并全部筛选后的数据 } ])