如何在 java 中使用 mongodb 嵌入式架构

How to use mongodb embedded schema in java

我被困在这里,我想将用户地址保留为嵌入式文档。但是在那里,它正在数据库中创建另一个 table 地址。所以我想要一个 table "user",在里面,我想要我的嵌入式文档,比如 "address"。用户的域设计是什么?

现在,我的用户域是

class User{
String name;
Address adress;
}

我的地址域是

class Address{
   String city;
}

我的控制器是

@RestController
@RequestMapping("/api/v1")
public class UserController {
public Map<String, Object> saveUser(@RequestBody User user) {
        userService.saveUser(user);
        return ResponseHandler.generateResponse("User registerted successfully", HttpStatus.ACCEPTED, false, null);
    }

}

我的服务是

public void saveUser(User user){
        Address a = new Address();
        a.setCity("delhi");
User user = new User();
user.setAddress(a);
        userDao.save(user);
    }

我想要结果在数据库中,而不是地址 separately.i 的 table 我正在为 this.how 使用 spring-data-mongotemplate 我可以这样做吗?

user{

  address:[{},{}] // multiple address could be
}

在用户中使用@Document注释,两者都必须实现Serializable

此致。

也许是这样的?

@Document
public class User {
    private String name;
    private List<Address> addresses = new ArrayList<>();

    // ctr, getters, setters...

    public static class Address {
        private String city;

        public Address(String city) { 
            this.city = city;
        }

        // getters, setters...
    }
}

在控制器中:

User.Address address = new User.Address("NY");
user.setAddress(address);
mongoTemplate.save(user);

基本上,从 json 解析用户应该可行:

{ name : "userName", addresses : [ { city : 'NY' } ] }

而且您不必将地址 class 嵌入到用户 class 中。只需在用户和 ebmed 地址对象上添加@Document。