Query query = new Query();
// where...is... 相当于 where ? = ?
query.addCriteria(Criteria.where("数据库表字段名").is("你的参数"));
//分页条件
query.skip(size*(page-1)).limit(size);
// findOne 返回的是一个对象 Class代表你的表对应的映射类
mongoTemplate.findOne(query, Class.class ,"数据库表名" );
// find 返回的是数组
mongoTemplate.find(query, Class.class,"数据库表名");
ArrayList<String> list = new ArrayList<>();
// list代表你的数据
Query query = Query.query(Criteria.where("数据库字段").in(list));
mongoTemplate.find(query, Class.class,"数据库表名");
// 如果想要查询指定的数据是否在数据库的数组中,可以用以下方法
Query query = Query.query(Criteria.where("数据库字段(数组)").is("你的数组"));
Query query = Query.query(Criteria.where("name").regex("小"));
lt:小于 lte: 小于等于 gte :大于等于 gt: 大于
if (null!=param.getBeginTime()){
query.addCriteria(Criteria.where("alarmTime").gte(param.getBeginTime()));
}
if (null!=param.getEndTime()){
query.addCriteria(Criteria.where("alarmTime").lt(param.getEndTime()));
}
query.fields().exclude("field");
数组格式:
{
name:"小明",
age:13,
friends:[
{
name:"小王",
age:12
},
{
name:"小李",
age:18
}
]
}
当要查询朋友中姓名为小王时
Query query = new Query();
query.addCriteria(Criteria.where("friends.$.name").is("小王"));
mongoTemplate.find(query, User.class,"数据库表名");
同样更新时也是一样,但是注意,更新时查询条件需要添加
query.addCriteria(Criteria.where("friends").elemMatch(Criteria.where("name").is("小王"));
Update update = Update.update("friends.$.friends", "小赵");
Query query = Query.query(Criteria.where("_id").is("id"));
Update update = new Update();
// push方法可以在数组中添加一条数据
// pull方法可以在数组中删除一条数据
// update.pull()
update.push("字段名称", "data");
mongoTemplate.updateFirst(query, update, Class.class);
ArrayList<Class> list = new ArrayList<>();
mongoTemplate.insert(list, Class.class);
public int conduct(AlarmDetail alarmDetail) {
int count = 0;
try {
Query query = new Query();
query.addCriteria(Criteria.where("_id").is(new ObjectId(alarmDetail.getId())));
query.with(Sort.by(Sort.Direction.DESC, "alarmTime"));
AlarmDetail alarm = mongoTemplate.findOne(query, AlarmDetail.class, "alarm");
if (Objects.nonNull(alarm)) {
Query query2 = new Query();
query2.addCriteria(Criteria.where("_id").is(new ObjectId(alarm.getId())));
Update update = new Update();
update.set("status", 1);
update.set("opRemark", alarmDetail.getOpRemark());
update.set("opUserId", alarmDetail.getOpUserId());
update.set("opUserName", alarmDetail.getOpUserName());
update.set("opTime", new Date());
mongoTemplate.updateFirst(query2, update, AlarmDetail.class, "alarm");
count = 1;
}
} catch (Exception e) {
log.error("通过参数alarmDetail:{}处理告警信息时出现异常:{}", JSON.toJSONString(alarmDetail), e.getMessage());
e.printStackTrace();
}
return count;
}
对数据库中数字字符串排序:
加上这一行就行了 亲身体验
query.collation(Collation.of("zh").numericOrdering(true));
还有根据字符串排序时又是顺序并不是我们所想的字典序,加上下面这个也ok
query.collation(Collation.of("zh"));
资料来源:https://blog.csdn.net/m0_53556997/article/details/122256645