开发者社区 问答 正文

请问mongoTemplate修改时如何传入一个对象?

第一次使用mongoDB来开发java项目,整合了Spring,有一个user类,里面有id,name和password,想在修改的时候直接传入一个user对象,因为之前mysql的时候一直是这么干的。但是测试时发现不起作用,因为关于mongoTemplate的文档比较少,也一直没查到,所以有几个问题想请教一下高手,望不吝赐教,谢谢!
service相关代码

    public int updateUser(User user) {
    mongoTemplate.updateFirst(new Query(Criteria.where("id").is(user.getId())),Update.update("user", user), User.class, USER_COLLECTION);
        return 0;
    }

测试类相关代码

@Test
  public void userAddTest() throws Exception {
      User user = new User();
      user.setName("zhangsan");
      user.setPassword("123abc");
      userService.addUser(user);

      List<User> list = userService.listAll();
      for (User user2 : list) {
          System.out.println(user2.getName());
          System.out.println(user2.getPassword());
      }

      System.out.println("*********************");
      user.setName("lisi");
      userService.updateUser(user);

      list = userService.listAll();
      for (User user2 : list) {
          System.out.println(user2.getName());
          System.out.println(user2.getPassword());
      }
  }

测试结果:

zhangsan
123abc

zhangsan
123abc

对了,还有一个问题,就是那个Update类中的update(String key, Object Value)里面的key 和 value是什么?因为在文档里没有查到……所以还烦请一并赐教,谢谢~

展开
收起
落地花开啦 2016-02-29 15:09:38 5895 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    key是mongodb里面集合里的字段名,value是你要修改的值,要传入对象你可以看看spring data mongodb。用jpa方式操作简单

    2019-07-17 18:50:20
    赞同 展开评论