当前位置: 首页 > wzjs >正文

wordpress 邀请码论坛seo招聘

wordpress 邀请码,论坛seo招聘,看楼盘的app,灌南网站开发本文只介绍常用的api,尽量以最简单的形式学会mongoTemplate基础api的使用 一、新增 主要包含三个api:insert(一个或遍历插多个)、insertAll(批量多个)、save(插入或更新) //这里简…

本文只介绍常用的api,尽量以最简单的形式学会mongoTemplate基础api的使用

一、新增

主要包含三个api:insert(一个或遍历插多个)、insertAll(批量多个)、save(插入或更新)

//这里简单演示,具体要插入的数据自己构建哈User user = new User();
mongoTemplate.insert(user,集合名);  //新增一个
mongoTemplate.save(user,集合名);    //根据主键id判断,如果数据库中已有id就更新,没有就新增List<User> list = new ArrayList<>();
mongoTemplate.insert(list,集合名);     //新增多个(遍历插入)
mongoTemplate.insertAll(list,集合名);  //新增多个(批量插入,效率高)

二、删除

从这里开始就要引入CriteriaQuery的概念 

Criteria是条件逻辑(仅包含where部分),支持链式编程,一般写法如下:
.where(第一个字段).is(精确匹配)
.and(其余条件).xxx(匹配条件)

常见匹配条件有这些:

.lt(value)   <value的
.lte(value)   ≤value的
.eq(value)   =value的
.gte(value)   ≥value的
.gt(value)   >value的
.in(a,b,c..)     元素符合a,b,c等等中的其中一个
.nin(a,b,c...)    不符合a,b,c等等的任何一个
.exist(value)    存在value字段的
.regex(String re)    正则表达式匹配

Query是完整的查询条件,在query可以添加其他逻辑(即limit,order by等等),支持链式编程,有以下功能:

.skip(long skip)  跳过文档的数量,配合limit做分页(类似offset和limit)
.limit(int limit)   限制返回多少条
.with(Sort sort)    设置排序

简单说一下排序怎么用哈,举个例子
.with(Sort.by(Sort.Direction.DESC,"classNo")),就是按classNO字段降序排序,我相信你懂了


最终mongoTemplate api通常要Query作为参数,构建方法有两种:
①先创建Criteria,处理完传入Query
②先new一个空Query,再手动add Criteria条件

//方法1
Criteria criteria = Criteria.where("name").is("hzj").and("id").is("0936");     //链式构造where条件
Query query = new Query(criteria);       //创建查询条件,把where条件传进去//方法2
Query query = new Query();
query.addCriteria(Criteria.where("name").is("hzj"));
query.addCriteria(Criteria.where("id").is("0936"));

好继续说删除,如下。这里User.class可以不写哈(如果写了就是严格匹配,删除符合查询条件且符合实体类映射的文档,如果不写就是删除符合查询条件的)

Query query = new Query(Criteria.where("name").is("John"));
mongoTemplate.remove(query, User.class,集合名);

 三、修改

需要构建一个update对象,声明你要改哪些地方
传query(匹配要改的文档),update(改什么),集合名

Query query = new Query(Criteria.where("name").is("John"));
Update update = new Update().set("age", 26);
//更新第一个匹配的文档
mongoTemplate.updateFirst(query, update, 集合名);
//更新所有匹配的文档
mongoTemplate.updateMulti(query, update, 集合名);

update提供的常见方法如下:

Update update = new Update();
// 设置字段值
update.set("field", value);
// 递增数值
update.inc("count", 1);
// 添加元素到数组
update.push("items", item);
// 从数组移除元素
update.pull("items", item);
// 重命名字段
update.rename("oldName", "newName");
// 取消设置字段
update.unset("field");

四、查找

使用findOne函数,只查一条文档;

// 创建查询条件
Criteria criteria = Criteria.where("age").gt(20);
Query query = new Query(criteria);User user = mongoTemplate.findOne(query, User.class,集合名);

如果要查多条文档就用find函数

// 创建查询条件
Criteria criteria = Criteria.where("age").gt(20);
Query query = new Query(criteria);// 添加排序
query.with(Sort.by(Sort.Direction.DESC, "age"));//查询符合条件的多个记录
List<User> users = mongoTemplate.find(query, User.class,集合名);
//查询符合记录的条数
int count = mongoTemplate.count(query, User.class,集合名);

(如果你有主键id,也可以用findById函数,传参依次是id、返参.class、集合名) 

五、聚合管道

有点厉害,这个可以取代query,也可以做联表用,先介绍联表怎么做:

在mongodb中使用aggregate聚合进行联表(你可以理解为sql中的left join)

LookupOperation lookup = LookupOperation.newLookup().from("要关联的集合名")      // 对应 SQL 的 FROM 表.localField("当前集合字段")  // 对应 SQL JOIN 的左边字段.foreignField("关联集合字段") // 对应 SQL JOIN 的右边字段.as("输出字段名");          // 关联结果存放的字段名Aggregation aggregation = Aggregation.newAggregation(lookup);
AggregationResults<Document> results = mongoTemplate.aggregate(aggregation, 集合名, Document.class
);

 可作where条件

// 等同于 find() 中的查询条件
Aggregation.match(Criteria.where("status").is("A").and("qty").gt(10))

可做select用

// 选择包含/排除字段,可重命名字段,计算新字段
Aggregation.project().and("name").as("productName")  // 重命名.and("price").multiply(1.1).as("priceWithTax")  // 计算.andExclude("_id")  // 排除字段

可做group by用

// 按category分组,计算每组的统计值
Aggregation.group("category").count().as("count")  // 计数.sum("qty").as("totalQty")  // 求和.avg("price").as("avgPrice")  // 平均值.max("price").as("maxPrice")  // 最大值

可做order by用

Aggregation.sort(Sort.Direction.DESC, "totalQty", "avgPrice")

可做分页用

Aggregation.skip(10),
Aggregation.limit(5)

还有展开数组,多维度聚合,图搜索等功能,这里先不说(还没咋学哈哈),后续再补 

如果多阶段如下
// 统计各部门各年龄段的平均工资
Aggregation agg = Aggregation.newAggregation(Aggregation.match(Criteria.where("salary").gt(3000)),  // 阶段1:筛选Aggregation.group("department", "age")                // 阶段2:分组.avg("salary").as("avgSalary"),Aggregation.sort(Sort.Direction.DESC, "avgSalary"),   // 阶段3:排序Aggregation.limit(10)                                // 阶段4:限制结果
);AggregationResults<Document> results = mongoTemplate.aggregate(agg, 集合名, Document.class
);


文章转载自:

http://KsxSqH79.yybcx.cn
http://DJQA0BqX.yybcx.cn
http://LLH6QgGq.yybcx.cn
http://TamhFBpI.yybcx.cn
http://FSweM1Kh.yybcx.cn
http://UjGhJYWJ.yybcx.cn
http://gNwb2FEb.yybcx.cn
http://v7crad2r.yybcx.cn
http://K5xiCMcO.yybcx.cn
http://mrFQ1r0D.yybcx.cn
http://vuU3iyKi.yybcx.cn
http://TxkOOC1d.yybcx.cn
http://KWTJgalx.yybcx.cn
http://Ra5TQQrs.yybcx.cn
http://Ghlzdni3.yybcx.cn
http://2oqQRxY4.yybcx.cn
http://peh8dCEo.yybcx.cn
http://4y67gk9T.yybcx.cn
http://mXCwq8gz.yybcx.cn
http://Imux1OxE.yybcx.cn
http://us0K7p85.yybcx.cn
http://UetuIeiX.yybcx.cn
http://tXe7FLsc.yybcx.cn
http://knbYbi1Q.yybcx.cn
http://K8vzPqGJ.yybcx.cn
http://Fg1eRh6L.yybcx.cn
http://B8k2gBe4.yybcx.cn
http://5R42pTQm.yybcx.cn
http://N9RANovD.yybcx.cn
http://6arUxLbs.yybcx.cn
http://www.dtcms.com/wzjs/693989.html

相关文章:

  • 徐州在线制作网站东莞常平邮政编码多少
  • 阜阳企业网站建设中英文企业网站
  • 响应式网站制作方法口碑好的徐州网站建设
  • 做网站的属于什么行业模板网站哪家好
  • 网站首页 psd移动端商城网站开发
  • 政务服务网站建设整改报告做公司网站外包
  • 深圳网站上线方案wordpress利用DW编辑
  • 做云购网站广州市建筑集团有限公司官网
  • 想用自己电脑做服务器做个网站阳萎早谢吃什么药最好
  • 设计之家logo设计潍坊优化网站排名
  • 网站建设内容论文广告发布费和广告服务费的区别
  • 怎么做网站动图网络推广心得体会
  • 重庆九龙坡区网站建设收到网站代码后怎么做
  • 网站怎么做彩页网站点击率
  • 盐城网站建设费用网站建设优化的书籍
  • 域名申请成功后怎么做网站建立网站来网上销售的英文
  • 建网站云空间厦门人才网官网招聘
  • 东莞网站seo公司做视频网站的公司有哪些
  • 南阳做个网站多少钱304hk 爱站网
  • 电子政务网站代码怎么注册自己的微网站
  • 建站用帝国还是wordpress素材下载网
  • 网站开发软件的选择赚钱游戏排行榜第一名
  • 西安专业建网站公司企业员工培训
  • 如何用代码制作网站徐州有名的设计公司
  • 建设银行咸阳缴费网站wordpress怎么上传高清图片
  • 网站游戏案例制作简历的免费模板网站
  • 私人小型服务器seo整站优化托管
  • c 博客网站开发教程百度优化教程
  • 网站开发源代码乐陵seo快速排名
  • 网站繁体jswordpress 回复 慢