《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> <
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何面试中判断区块链以太坊工程师是否优秀
对优质区块链开发人员的需求很大,这是有充分理由的。区块链和ICO领域在过去几年中爆炸式增长。越来越多的人试图进入并在该领域中扬名立万。但是,为了获得成功,他们拥有一支强大而健全的团队至关重要。区块链开发人员,更准确地说,以太坊开发人员是该团队中最关键的组成部分。 因此,在本指南中,我们将使你的生活更轻松。我们将向你展示如何精确定位和从人群中筛选的优秀的人才。 在我们雇用以太坊开发者之前,重要的是我们要知道我们雇用的是哪类人。 怎么样才算是一个完美NB的以太坊开发者? 在以太坊开发者精湛的技能中,最重要的是要知道将最优秀的与其他人区分开的基本品质是什么?优秀的开发人员必须不仅仅是具有区块链编码技能的开发人员。我们并不是说只熟悉编码就没有价值,但是,如果你需要一个合适的开发人员来创建一个帝国。那么,你正在寻找的一些主要品质是什么? 去中心化的坚定信念:这些人认为去中心化将挽救人类。传统公司不会雇佣这些人,因为他们相信社会,公司和政府等机构不应该去中心化。 掌握密码学:区块链开发人员需要掌握加密经济学。加密经济学,密码学和经济学分为两部分。这就是为什么伟大的以太坊开发人员应该对密码学有一种不...
- 下一篇
Logan:美团点评的开源移动端基础日志库
前言 Logan是美团点评集团移动端基础日志组件,这个名称是Log和An的组合,代表个体日志服务。同时Logan也是“金刚狼”大叔的名号,当然我们更希望这个产品能像金刚狼大叔一样犀利。 Logan已经稳定迭代了一年多的时间。目前美团点评绝大多数App已经接入并使用Logan进行日志收集、上传、分析。近日,我们决定开源Logan生态体系中的存储SDK部分(Android/iOS),希望能够帮助更多开发者合理的解决移动端日志存储收集的相关痛点,也欢迎更多社区的开发者和我们一起共建Logan生态。Github的项目地址参见: https://github.com/Meituan-Dianping/Logan 背景 随着业务的不断扩张,移动端的日志也会不断增多。但业界对移动端日志并没有形成相对成体系的处理方式,在大多数情况下,还是针对不同的日志进行单一化的处理,然后结合这些日志处理的结果再来定位问题。然而,当用户达到一定量级之后,很多“疑难杂症”却无法通过之前的定位问题的方式来进行解决。移动端开发者最头疼的事情就是“为什么我使用和用户一模一样的手机,一模一样的系统版本,仿照用户的操作却复现不出...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- 2048小游戏-低调大师作品
- Mario游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,8上快速安装Gitea,搭建Git服务器