如何在Springboot中从其他集合中获取数据

时间:2019-10-12 10:32:13

标签: java json mongodb spring-boot microservices

我正在创建springboot项目并使用mongodb作为数据库。现在我有2个收藏夹

用户集合

@Data
@Document(collection = "user")
public class User {
  @Id
  private int user_id;
  private String user_name;
  private int product_id
}

用户集中的文档

[
  {
    "user_id": 0,
    "user_name": "bob",
    "product_id: 001
  }
]

产品系列

@Data
@Document(collection = "product")
public class Product {
@Id
  private int product_id;
  private String product_name;
  private double price; 
}

产品集中的文档

[
  {
    "product_id": 001,
    "product_name": "Coconut",
    "price": 20.00
  }
]

这是我想要的结果,当我在用户集合中使用“ GET”方法

[
  {
    "user_id": 0,
    "user_name": "bob",
    "product: [
                {
                  "product_id": 001,
                  "product_name": "Coconut",
                  "price": 20.00
                }
              ],
  }
]

或者任何可以获得“ Product_id” = 001的Product的所有值的结果

PS:插入数据时。按表插入数据。 product_id是字符串(“ product_id”:001)不是对象(“ product_id”:[...])

PS:我的英语不好,如果您有任何疑问可以问更多

2 个答案:

答案 0 :(得分:0)

如果您想要这样的JSON响应:

[
  {
    "user_id": 0,
    "user_name": "bob",
    "product: [
                {
                  "product_id": 001,
                  "product_name": "Coconut",
                  "price": 20.00
                }
              ], <---- not comma here
  }
]

您应该相应地更改类的结构;

用户类别

@Data
@Document(collection = "user")
public class User {
  @Id
  private int user_id;
  private String user_name;
  private List<Product> product;
}

产品类别

@Data
@Document(collection = "product")
public class Product {
@Id
  private int product_id;
  private String product_name;
  private double price; 
}

您可能正在使用Jackson库,它会根据需要立即自动序列化。

答案 1 :(得分:0)

其中一种方法是使用@DBRef

@Data
@Document(collection = "user")
public class User {
  @Id
  private String id;
  private String username;
  @JsonProperty("products")
  @DBRef
  private List<Product> productList;
}


@Data
@Document(collection = "product")
public class Product {
  @Id
  private String id;
  private String productName;
  private double price; 
}

此处是展示如何正确使用它的文章https://www.baeldung.com/cascading-with-dbref-and-lifecycle-events-in-spring-data-mongodb