《Netkiller Spring Cloud 手札》Spring boot 2.0 mongoTemplate 操作范例
本文节选自 《Netkiller Spring Cloud 手札》
Netkiller Spring Cloud 手札
Spring Cloud Cookbook
Mr. Neo Chan, 陈景峯(BG7NYT)
中国广东省深圳市望海路半岛城邦三期
518067
+86 13113668890
<netkiller@msn.com>
$Id: book.xml 606 2013-05-29 09:52:58Z netkiller $
版权 © 2015-2018 Neo Chan
版权声明
转载请与作者联系,转载时请务必标明文章原始出处和作者信息及本声明。
|
|
|
|
2017-11
我的系列文档
编程语言
5.2.4. mongoTemplate
导入与模板相关的包
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Update;
注入 MongoTemplate 对象
@Autowired private MongoTemplate mongoTemplate;
5.2.4.1. Save 保存
User user = new User();
user.setName("Netkiller");
mongoTemplate.save(user, "user");
更新数据
user = mongoTemplate.findOne(Query.query(Criteria.where("name").is("Jam")), User.class);
user.setName("Neo");
mongoTemplate.save(user, "user");
5.2.4.2. Insert
User user = new User();
user.setName("Neo");
mongoTemplate.insert(user, "user");
BSONObject personBsonObj = BasicDBObjectBuilder.start()
.add("name","Neo Chen")
.add("age",27)
.add("address",null).get();
mongoTemplate.insert(personBsonObj,"personCollection");
document in the db:
db.personCollection.findOne().pretty();
{"age":21,"name":"John Doe";"address":null}*
5.2.4.3. 更新第一条
Query query = new Query();
query.addCriteria(Criteria.where("name").is("Neo"));
Update update = new Update();
update.set("name", "Netkiller");
mongoTemplate.updateFirst(query, update, User.class);
5.2.4.4. 更新所有数据
Query query = new Query();
query.addCriteria(Criteria.where("name").is("Neo"));
Update update = new Update();
update.set("name", "Jerry");
mongoTemplate.updateMulti(query, update, User.class);
5.2.4.5. 查找并保存
Query query = new Query();
query.addCriteria(Criteria.where("name").is("Luck"));
Update update = new Update();
update.set("name", "Lisa");
User user = mongoTemplate.findAndModify(query, update, User.class);
5.2.4.6. upsert
Query query = new Query();
query.addCriteria(Criteria.where("name").is("Green"));
Update update = new Update();
update.set("name", "Tom");
mongoTemplate.upsert(query, update, User.class);
5.2.4.7. 删除
User user = new User();
user.setId("5bbf091efd9557069c4a25c5")
mongoTemplate.remove(user, "user");
5.2.4.8. 查找一条数据
public Person findOneByName(String name) {
Query query = new Query();
query.addCriteria(Criteria.where("name").is(name));
return mongoTemplate.findOne(query, Person.class);
}
5.2.4.9. 查找所有数据
public List<Person> findByName(String name) {
Query query = new Query();
query.addCriteria(Criteria.where("name").is(name));
return mongoTemplate.find(query, Person.class);
}
5.2.4.10. Query
5.2.4.10.1. 翻页
public List<Person> getAllPersonPaginated(int pageNumber, int pageSize) {
Query query = new Query();
query.skip(pageNumber * pageSize);
query.limit(pageSize);
return mongoTemplate.find(query, Person.class);
}
5.2.4.10.2. between
实现一个区间条件 new Criteria("createdDate").gte(beginDate).lte(endDate)
public boolean AccountDeposit(Date beginDate, Date endDate) {
MatchOperation matchOperation = match(new Criteria("createdDate").gte(beginDate).lte(endDate));
GroupOperation groupOperation = group("loginname").sum("amount").as("amount");
SortOperation sortOperation = sort(new Sort(Direction.ASC, "loginname"));
Aggregation aggregation = newAggregation(matchOperation, groupOperation, sortOperation);
AggregationResults<AccountSettlementDetails> results = mongoTemplate.aggregate(aggregation, AccountSettlementDetails.class, AccountSettlementDetails.class);
if (results.getMappedResults() != null) {
log.info(results.getRawResults().get("result").toString());
for (AccountSettlementDetails settlementDetails : results.getMappedResults()) {
log.info("{}", settlementDetails.toString());
}
}
return true;
}
5.2.4.11. Criteria
5.2.4.11.1. is
Query query = new Query();
query.addCriteria(Criteria.where("name").is("Neo"));
List<User> users = mongoTemplate.find(query, User.class);
5.2.4.11.2. Regex 正则表达式搜索
查询以N开头的名字
Query query = new Query();
query.addCriteria(Criteria.where("name").regex("^N"));
List<User> users = mongoTemplate.find(query,User.class);
查询以o结尾的名字
Query query = new Query();
query.addCriteria(Criteria.where("name").regex("o$"));
List<User> users = mongoTemplate.find(query, User.class);
5.2.4.11.3. lt 和 gt
查询年龄小于 < 30 并 > 20 的用户
Query query = new Query();
query.addCriteria(Criteria.where("age").lt(30).gt(20));
List<User> users = mongoTemplate.find(query,User.class);
查找日期范围
Date start = DateUtil.convertStringToDateTime("2014-02-10 20:38:44");
Date end = DateUtil.convertStringToDateTime("2014-02-10 20:38:50");
Query query = new Query();
Criteria criteria = Criteria.where("delflag").is(false);
criteria.and("modifyDate").gte(start).lte(end);
query.addCriteria(criteria);
query.limit(10);
5.2.4.11.4.
<programlisting>
<


微信收款码
支付宝收款码