首页 > 数据库技术 > 详细

mongodb操作

时间:2019-08-24 15:42:12      阅读:90      评论:0      收藏:0      [点我收藏+]
Criteria cri = Criteria.where("schoolId").is(gxyJobEntity.getShoolId());

Aggregation agg = Aggregation.newAggregation( Aggregation.match(cri), Aggregation.project("memberId","attendenceTime","address"), Aggregation.group("memberId").max("attendenceTime").as("attendenceTime") ); List<MongoMoguAttendenceDto> result =template.aggregate(agg,"mogu_attendance",MongoMoguAttendenceDto.class).getMappedResults();

  mongdb 查询: 

db.mogu_attendance.aggregate([
{ "$match":{ "schoolId" : "f11c8ea12f457dbc19c768a8bb6357f8"}} ,
{ "$project":{address:1,memberId:1,attendenceTime:1, schoolId:1,userId:1}},
{ "$group" : { "_id" : "$memberId" ,"attendenceTime" : { "$max" : "$attendenceTime"}}}])

类似于: select memberId as _id , max(attendenceTime) as attendenceTime from mogu_attendance group by memberId where schoolId=‘f11c8ea12f457dbc19c768a8bb6357f8‘;

 

查询某个学校 每个学生(memberId是学生id) 最后一次考勤的时间。

输出:

/* 1 */
{
    "_id" : "ffd56c4f63f20adbbc7c88fe6dc26353",
    "attendenceTime" : ISODate("2019-08-31T10:00:00.000Z")
}

/* 2 */
{
    "_id" : "11c21ada808fb8a9bcb32aade1a5b61e",
    "attendenceTime" : ISODate("2019-08-22T05:59:28.646Z")
}

  在实体类 

MongoMoguAttendenceDto
总包括两个字段:
public class MongoMoguAttendenceDto implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 唯一主键
	 */
	@Id
	private String attendanceId;
	/**
	 * 用户id
	 */
	private String userId;
	……
	/**
	 * 考勤时间
	 */
	private Date attendenceTime;

	private String backup;

  则把 查询结果的 _id 取值 memberId , 作为主键,并且 映射给 MongoMoguAttendenceDto 实体对象的 attendanceId , 

max("attendenceTime").as("attendenceTime")  把 attendenceTime字段 映射给  MongoMoguAttendenceDto 实体 的attendenceTime字段


mongodb操作

原文:https://www.cnblogs.com/z360519549/p/11404303.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!