Spring Data MongoDB 的使用

前期准备


maven配置

	<dependency>
      	<groupId>org.springframework.boot</groupId>
      	<artifactId>spring-boot-starter-data-mongodb</artifactId>
  	</dependency>

mongodb配置

spring:
  	data:
    mongodb:
      host: 127.0.0.1	//ip
      port: 9091		//端口
      database: test	//数据库名
      username: admin	//用户名
      password: 123456	//密码

mongoTemplate 引入

@Autowired
private MongoTemplate template;

mongoOperations 引入

@Autowired
private MongoOperations mongoOperations;

新增文档

//insert方法并不提供级联类的保存,所以级联类需要先自己先保存
//执行完insert后对象obj将会获得保存后的id
//注意:若新增数据的主键已经存在,则会抛DuplicateKeyException异常
mongoTemplate.insert(obj);

//若保存数据的主键已经存在,则会对已经存在的数据修改
mongoTemplate.save(obj);

删除文档

mongoTemplate.remove(obj);	//不支持级联

查询相关

//分页查询
Criteria criteria = Criteria.where("deleteStatus").ne(true);
Sort sort = new Sort(Sort.Direction.DESC, HunterCompany.FIELD_MODIFY_DATE);
Query query = Query.query(criteria).with(sort).skip(pageIndex * pageSize).limit(pageSize);
mongoOperations.find(query, Position.class);

//查询指定的字段
Criteria criteria = Criteria.where("id").is("5e96b86a4b89353e59cdb18e");
Query query = Query.query(criteria);
query.fields().include("name").include("companyName").include("department");
mongoOperations.findOne(query, Position.class);	

//聚合查询
Criteria criteria = Criteria.where("senderId").is(senderId).and("companyId").is(companyId);
Aggregation agg = Aggregation.newAggregation(
		Aggregation.match(criteria),
		Aggregation.unwind(field),	//拆分数据里的数组
		Aggregation.group(field).count().as(CommonSo.FIELD_RESULT),
		Aggregation.sort(new Sort(Sort.Direction.DESC, CommonSo.FIELD_RESULT)),
		Aggregation.project().and(Fields.UNDERSCORE_ID).as(CommonSo.FIELD_ID).and(CommonSo.FIELD_RESULT)
);
List<CommonSo> results = super.mongoOperations.aggregate(agg, this.getReturnClass(), CommonSo.class).getMappedResults();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值