1、简单查询数据
Query query = new Query();
Criteria criteria = Criteria.where("userId").is(userId);
query.addCriteria(criteria).limit(1);
List<DTO> dtoList = mongoTemplate.find(query,
DTO.class, "xxx");
// xxx为collectionName
需要特别注意DTO中的数据类型要与mongoDB中的类型一致,如果不一致,比如String与Long会导致查不到数据
2、分页查询
Query query = new Query();
Criteria criteria1 = null;
Criteria criteria2 = null;
Criteria criteria3 = null;
try {
if (!Strings.isNullOrEmpty(keyword)) {
criteria1 = Criteria.where("keyword").regex(keyword);
}
if (!Strings.isNullOrEmpty(text)) {
criteria2 = Criteria.where("text").regex(text);
}
if (!Strings.isNullOrEmpty(createTimeStart)) {
criteria3 = Criteria.where("createTime").gte(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(createTimeStart));
}
if (!Strings.isNullOrEmpty(createTimeEnd)) {
if (criteria3 != null) {
criteria3.lte(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(createTimeEnd));
} else {
criteria3 = Criteria.where("createTime").lte(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(createTimeEnd));
}
}
if (criteria1 != null || criteria2 != null || criteria3 != null) {
Criteria criteria = new Criteria();
List<Criteria> nonNull = Lists.newArrayList();
if (criteria1 != null) {
nonNull.add(criteria1);
}
if (criteria2 != null) {
nonNull.add(criteria2);
}
if (criteria3 != null) {
nonNull.add(criteria3);
}
if (nonNull.size() > 1) {
criteria.andOperator(nonNull.toArray(new Criteria[]{}));
}
if (nonNull.size() == 1) {
criteria = nonNull.get(0);
}
query.addCriteria(criteria);
}
query = query.with(new Sort(Sort.Direction.DESC, "createTime")).skip(pageInfoDto.getStartRow()).limit(pageInfoDto.getPageSize());
List<DTO> dtoList = mongoTemplate.find(query, DTO.class, "xxx");
以上即可实现分页查询
3、数据新增
DTO dto= new DTO();
dto.setId(1111);
....
mongoTemplate.save(dto, "xxx");
4、创建索引
ListIndexesIterable<Document> indexList = mongoTemplate
.getCollection("xxx").listIndexes();
//先检查是否存在索引,特殊业务应用,一般不需要这一步
for (Document document : indexList) {
Object key = document.get("key");
if (null != key && key instanceof Document) {
Document keyDocument = (Document) key;
if (keyDocument.containsKey("userId")) {
LoggerUtil.info("xxx userId exist index already");
return false;
}
}
}
//该参数为索引的属性配置
IndexOptions indexOptions = new IndexOptions();
indexOptions.background(true);
indexOptions.name("idx_userId");
String resultStr = mongoTemplate.getCollection("xxx")
// Document key为索引的列名称,value为索引类型,在userId上创建hashed类型索引
.createIndex(new Document("userId", "hashed"), new IndexOptions().background(false).name("idx_userId"));
LoggerUtil.info("xxx add index idx_userId result : {}", resultStr);
return true;
以上即可完成创建索引的操作