mongodb 的基础指令

package com.sumpreme.oak.dao;

import com.mongodb.BasicDBObject;
import com.sumpreme.oak.entity.FlatWrap;
import org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.aggregation.Aggregation;
import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Repository;

import javax.annotation.Resource;
import java.util.List;
import java.util.Queue;
import java.util.regex.Pattern;

/**
* @author Administrator
* @Auther: LiYang
* @Date: 2022/4/22 15:42
* @Description:
*/
@Repository
public class FlatWrapDao {
   @Resource
   private MongoTemplate mongoTemplate;

   public void insertFlatWrap(FlatWrap flatWrap) {
       mongoTemplate.insert(flatWrap);

  }

   //删除操作
   public void deleteFlatWrap(FlatWrap flatWrap) {
       // 删除snip为22的数据
       Query query = Query.query(Criteria.where("snip").is("22"));
       //查询出符合条件的第一个结果,并将符合条件的数据删除,只会删除第一条
       flatWrap = mongoTemplate.findAndRemove(query, FlatWrap.class);
       //查询出符合条件的所有结果,并将符合条件的所有数据删除
       //flatWrap=mongoTemplate.findAndRemove(query,FlatWrap.class);

  }

   //修改操作
   public void updateFlatWrap() {
       //修改第一条snip为22的数据中的presser和snip
       Query query = Query.query(Criteria.where("snip").is("22"));
       Update update = Update.update("presser", "22").set("snip", 10);
       mongoTemplate.updateFirst(query, update, FlatWrap.class);

       /*inc用于累加,在snip基础上加10
       Update update = Update.update("presser", "22").inc("snip", 10);*/

       /*rename用于修改字段名字
       Update update = Update.update("presser", "22").rename("snip", "snipp");*/

       /*删除snip字段
       Update update = Update.update("presser", "22").unset("snip");*/

       //修改全部符合条件的
       mongoTemplate.updateMulti(query, update, FlatWrap.class);
       /*//有则修改,没有就添加
       mongoTemplate.upsert(query, update, FlatWrap.class);*/

  }

   //查找操作
   public void findFlatWrap(Integer pageNumber, Integer pageSize, FlatWrap flatWrap) {
       /**
        * 根据snip查询所有符合条件的数据,返回List
        */
       /*Query query = Query.query(Criteria.where("snip").is("22"));
       List<FlatWrap> flatwrap = mongoTemplate.find(query, FlatWrap.class);*/

       /**
        * 查询符合条件第一条
        */
       /*FlatWrap flatWrap = mongoTemplate.find(query, FlatWrap.class);*/

       /**
        * 查询所有数据
        */
       /*flatWrap = mongoTemplate.findAll(FlatWrap.class); */

       /**
        *查询符合条件数量
        */
       /* long count = mongoTemplate.count(query, FlatWrap.class);*/

       /**
        *根据主键ID查询
        */
       /*flatWrap=mongoTemplate.findById(new ObjectId("57c6e1601e4735b2c306cdb7"), FlatWrap.class);*/

       /**
        *in,ne,lt,gt查询,regax 模糊查询含有,size(3)数组数量
        */
       /*query = Query.query(Criteria.where("snip").in(40));
   flatWrap = mongoTemplate.find(query, FlatWrap.class);*/

       /**
        *查询 或者
        */
       /*Query query = new Query();
       query.addCriteria(Criteria.where("name").regex(pattern));
       query = Query.query(Criteria.where("").orOperator(
           Criteria.where("snip").is("20"),
           Criteria.where("presser").is(20)));
       flatWrap = mongoTemplate.find(query, FlatWrap.class);*/

       /**
        * 联合查询
        */
       //定义分组字段
       String[] groupIds = new String[]{"$sewingid", "presserid"};
       //定义查询条件
       Criteria criteria = new Criteria();
       criteria.and("sewing").is("20");
       criteria.and("presser").is("22");
       //定义排序条件分页展示
       Query query = new Query();
       Sort sort = Sort.by(Sort.Direction.DESC, "createTime");
       List<FlatWrap> flatWrapList = mongoTemplate.find(query.with(sort).limit( 20 ),FlatWrap.class);
       //联合查询总条数,分页用
       Aggregation newAggregation = Aggregation.newAggregation(
               //从表名,主表联接字段,从表联接字段,别名
               Aggregation.lookup('B', 'sewingid', 'sewingid', 'fo'),
               Aggregation.unwind("$userrole"),
               Aggregation.match(criteria),
               Aggregation.group(groupIds)
                       //取值,起别名
                      .last("$operateTime").as("operateTime")
                      .first("$userinfo").as("info"),
               Aggregation.sort({"createtime":1}),
       //Long类型的参数
       Aggregation.skip(pageSize * (pageNumber - 1L)),
               Aggregation.limit(pageSize)
      );
       //查询
       AggregationResults<BasicDBObject> aggregate = mongoTemplate.aggregate(
               newAggregation, "A", BasicDBObject.class//A表,是查询的主表
      );
       int count = mongoTemplate.aggregate(aggregationCount, "A", BasicDBObject.class).getMappedResults().size();
       //组装分页对象
       Page<BasicDBObject> pager = new Page<>(aggregate.getMappedResults(), count, pageSize, pageNumber, page * (pageNumber - 1));
       //对象转换
       //将BasicDBObject转换成前面需要的类型.....
//模糊查询
       /*Pattern pattern=Pattern.compile("^.*$",Pattern.CASE_INSENSITIVE);
       Query query=new Query(Criteria.where("snip").regex(pattern));
       mongoTemplate.findOne(query,FlatWrap.class,"snipList");*/
  }
}
 

posted on   吴XX  阅读(413)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示