Mongo DB /不重复
问题描述:
我有一个mongo集合,可以保存设备的状态记录。因此,每个设备可能有多个记录。我想要做的是通过mongoTemplate创建一个查询,获取每个设备的最新记录。Mongo DB /不重复
这里的约束:
- 传递一个集<“字符串”> name_ids,蒙戈集合不是_id内定期实地或_id
- 只获取最新记录每个设备使用中发现匹配名_ID
- 返回列表<“DeviceStateData”>(无重复应用相同的名_ID找到)COLL的
示例挠度对象:
{
_id: “241324123412”,
名_ID: “飞人”,
电源状态: “ON”,
时间戳:ISODate( '')
}
感谢
答
您可以尝试下面的聚合管道。
下面的查询将$sort
上name_id
随后$group
上name_id
和timeStamp
文件来接从排序文件的第一个。
$$ROOT
保留整个文件。
import static org.springframework.data.mongodb.core.aggregation.Aggregation.newAggregation;
import static org.springframework.data.mongodb.core.query.Criteria.where;
Aggregation aggregation = newAggregation(
match(findCriteria),
sort(new Sort(Sort.Direction.DESC, "name_id", "timeStamp")),
group("name_id").first("$$ROOT").as("latest"));
List<DeviceStateData> deviceData = mongoTemplate.aggregate(aggregation, DeviceStateData.class, DeviceStateData.class).getMappedResults();
不幸的是,我不能够使用Aggregation和当前的spring-data依赖关系,并且不能轻易改变它。尽管谢谢你的回复。 – Sam