package com.ruoyi.common.mongodb;
import org.springframework.data.mongodb.core.mapping.Document;
@Document(collection = "emailcount")
public class EmailCount {
private String mykey;
private String uid;
public String getMykey() {
return mykey;
}
public void setMykey(String mykey) {
this.mykey = mykey;
}
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
}
查
Query query = new Query();
query.addCriteria(Criteria.where("uid").is(uid));
query.addCriteria(Criteria.where("mykey").is(DateUtils.getDate()));
EmailCount mgt = mongoTemplate.findOne(query, EmailCount.class);
全文索引
TextCriteria criteria = TextCriteria.forDefaultLanguage()
.matchingAny("coffee", "cake");
Query query = TextQuery.queryText(criteria)
.sortByScore()
.with(new PageRequest(0, 5));
List<CookingRecipe> recipes = template.find(query, CookingRecipe);
增改
Query query = new Query();
String mykey = DateUtils.getDate();
query.addCriteria(Criteria.where("uid").is(uid));
query.addCriteria(Criteria.where("mykey").is(mykey));
Update update = new Update().set("mykey", mykey);
mongoTemplate.upsert(query, update, EmailCount.class);
list 批量更新
public Boolean doBatch(List<Map> docs, String systemId, int markDate, int start, int end,int updateType) {
systemId = systemId.toUpperCase();
Boolean flag = true;
try {
List<BatchUpdateOptions> list = new ArrayList<>();
for (int i = start; i < end; i++) {
Map<String, String> map = docs.get(i);
Update update = new Update();
update.setOnInsert("WF_DOCCREATED", DateUtils.getNow());
update.setOnInsert("SYSTEMID", map.get("SYSTEMID"));
update.setOnInsert("PROCESSNAME", map.get("PROCESSNAME"));
update.setOnInsert("PROCESSID", map.get("PROCESSID"));
update.setOnInsert("DOCUNID", map.get("DOCUNID"));
update.setOnInsert("APPID", map.get("APPID"));
update.setOnInsert("KEYWORDS", map.get("KEYWORDS"));
update.set("WF_LASTMODIFIED", DateUtils.getNow());
update.set("MARKDATE", markDate);
for (String k : mongodbKey) {
String v = map.get(k);
update.set(k, v);
}
Query query2;
if(updateType==1){
query2 = Query.query(Criteria.where("SYSTEMID").is(map.get("SYSTEMID")).and("PROCESSID").is(map.get("PROCESSID")).and("DOCUNID").is(map.get("DOCUNID")).and("TIMESTAMP").lte(map.get("TIMESTAMP")));
}else {
query2 = Query.query(Criteria.where("SYSTEMID").is(map.get("SYSTEMID")).and("PROCESSID").is(map.get("PROCESSID")).and("DOCUNID").is(map.get("DOCUNID")));
}
BatchUpdateOptions batchUpdateOptions = new BatchUpdateOptions(query2, update, true, false);
list.add(batchUpdateOptions);
}
int allusertodo = mongoService.batchUpdate("allusertodo", list);
} catch (Exception e) {
flag = false;
String errorMsg = Tools.getErrorMsgFromException(e);
logger.error(systemId + ":" + errorMsg);
String part="務";
if(updateType==1){
part="辦";
}
LogMsg logMsg = new LogMsg("123",part , "updateBat", 0, systemId + ":" +errorMsg);
messageService.sendSysLog(logMsg);
}
return flag;
}
private int doBatchUpdate(String collName, List<BatchUpdateOptions> options, boolean ordered) {
DBObject command = new BasicDBObject();
command.put("update", collName);
List<BasicDBObject> updateList = new ArrayList<BasicDBObject>();
for (BatchUpdateOptions option : options) {
BasicDBObject update = new BasicDBObject();
update.put("q", option.getQuery().getQueryObject());
update.put("u", option.getUpdate().getUpdateObject());
update.put("upsert", option.isUpsert());
update.put("multi", option.isMulti());
updateList.add(update);
}
command.put("updates", updateList);
command.put("ordered", ordered);
Document document = mongoTemplate.getDb().runCommand((Bson) command);
Object n = document.get("n");
if (n.getClass() == Integer.class) {
return (Integer) n;
}
return Integer.parseInt(String.valueOf(n));
}
查詢mongodb狀態
public Document serveStatus() {
DBObject command = new BasicDBObject();
command.put("serverStatus", 1);
Document document = mongoTemplate.getDb().runCommand((Bson) command);
return document;
}