542179528 发表于 2017-12-14 21:09:45

spring整合mongodb

  

// 指定字段查询,只查询age和name两个字段// query.fields().include("age").include("name");// List<User> userList3 = mongoTemplate.find(query, User.class);// printList(userList3);  

// 分页查询// query.skip(2).limit(3);// List<User> userList4 = mongoTemplate.find(query, User.class);// printList(userList4);  

// 查询所有// printList(mongoTemplate.findAll(User.class));  

// 统计数据量// System.out.println(mongoTemplate.count(query, User.class));  

  }
  

  /**
  * 更新用户数据
  */
  @Test
  public void testUpdateUser() {
  // update(query,update,class)
  // Query query:需要更新哪些用户,查询参数
  // Update update:操作符,需要对数据做什么更新

  //>  

  // 更新age大于24的用户信息
  Query query = new Query();
  query.addCriteria(where("age").gt(24));
  

  Update update = new Update();
  // age值加2
  update.inc("age", 2);
  // update.set("name", "zhangsan"); 直接赋值
  // update.unset("name"); 删去字段
  // update.push("interest", "java"); 把java追加到interest里面,interest一定得是数组
  // update.pushAll("interest", new String[]{".net","mq"})
  // 用法同push,只是pushAll一定可以追加多个值到一个数组字段内
  // update.pull("interest", "study"); 作用和push相反,从interest字段中删除一个等于value的值
  // update.pullAll("interest", new String[]{"sing","dota"})作用和pushAll相反
  // update.addToSet("interest", "study") 把一个值添加到数组字段中,而且只有当这个值不在数组内的时候才增加
  // update.rename("oldName", "newName") 字段重命名
  

  // 只更新第一条记录,age加2,name值更新为zhangsan
  mongoTemplate.updateFirst(query, new Update().inc("age", 2).set("name", "zhangsan"), User.class);
  

  // 批量更新,更新所有查询到的数据
  mongoTemplate.updateMulti(query, update, User.class);
  

  }
  /**
  * 测试删除数据
  */
  @Ignore
  @Test
  public void testRemoveUser() {
  Query query = new Query();
  // query.addCriteria(where("age").gt(22));
  Criteria criteria = where("age").gt(22);
  // 删除年龄大于22岁的用户
  
      query.addCriteria(criteria);
  mongoTemplate.remove(query, User.class);
  }
  

  public void printList(List<User> userList) {
  for (User user : userList) {
  System.out.println(user);
  }
  }
  /**
  * 数组文档指定元素更新
  */
  @Test
  public void testUpdateDocument() {
  // 只更新一个内嵌文档
  
//      Update update = new Update();
  
//      update.set("sonModelList.$.state", 2);
  
//      mongoTemplate.updateMulti(new Query(Criteria.where("sonModelList.geoNum").is("532568248122605568")), update, CatchThirteenthModel.class);
  // 批量更新所有的内嵌文档
  
//      update.set("sonModelList.$.state", 2);
  
//      mongoTemplate.updateMulti(new Query(Criteria.where("sessionId").is("cf23e870-2c5a-4d1f-9652-6fa1793dc8be")),
  
//                new Update().set("state", 2), CatchThirteenthModel.class);
  
//      mongoTemplate.updateMulti(new Query(Criteria.where("sonModelList.parentGeoNum").is("532568523000512512")),
  
//                new Update().set("state", 2), CatchFifteenthModel.class);
  List<CatchFifteenthModel> find = mongoTemplate.find(new Query(Criteria.where("sonModelList.parentGeoNum").is("532568523000512512")), CatchFifteenthModel.class);
  System.out.println("");
  }
  /**
  * 测试findAndModify方法
  */
  @Test
  public void testFindAndModify() {
  Criteria criteria = new Criteria();
  criteria.andOperator(Criteria.where("geoNum").is("526547322448904192"), Criteria.where("geoLevel").is(14));
  CatchModel model = mongoTemplate.findAndModify(new Query(criteria), new Update().set("state", 2).set("endTime", new Date()), new FindAndModifyOptions().returnNew(true), CatchModel.class);
  System.out.println(model);
  }
  
}
页: [1]
查看完整版本: spring整合mongodb