情形:一个表每天至少3千万条数据。一共有上千种类型。现在能不能一次快速读取上千种类型的的当天最大值,也就是当天最后记录时间那条。也许是15点。也许是23点。不定。尽可能使千种类型一次分组求出来。而不是分开每种类型,然后排序,然后取最后一条数据的方法。
1 2 | db.SEC_2018_05_14.aggregate([{ $group: { _id: {dev_id: "$dev_id", data_id: "$data_id"},lastObj: { $last: "$$ROOT" } } } , {$project{_id:0,dev_id:"$lastObj.dev_id",data_id:"$lastObj.data_id",data_value:"$lastObj.data_value",fdate:"$lastObj.fdate"}} ]).pretty() |
dev_id,data_id,fdate 是一个索引。
fdate是一个索引。
如上,虽然是走了索引,250万要五六秒,我想如果是3千万,会用时不少。
有什么好的办法可以秒出吗?