gpt4 book ai didi

java - 带有 spring 数据的 mongodb 查询键值

转载 作者:可可西里 更新时间:2023-11-01 09:12:12 25 4
gpt4 key购买 nike

我已经开始使用 mongodb 和 spring boot 以及 spring JPA 数据的项目,我意识到我无法将我的数据模型映射到实体并轻松地对其进行查询,所以我有两个问题,

我的数据模型就是这样(只针对一个 Collection)

{
name: "Name",
lastName: "Last Name",
attributes: {
age: 25
eye: {
color: "RED",
size: "BIG"
}
}
}

我的实体是

@Entity // or @Document
public class User{
private String name;
private String lastName;
private Map<String, ?> attributes = new HashMap<>();

// id or the setter getter are omitted
}
  1. 我可以像以前那样在我的 mongodb 集合中映射 attributes 属性吗 (Map)
  2. 如何进行查询以查找属性?

    我可以这样做吗? List<User> findAllByAttributesAge(Integer age);

最佳答案

今天我在 Spring Mongodb 中遇到了 Map 查询的问题,由于这个问题在 google 中出现了第一个问题,所以我将提供另一个答案。

由于其他答案引用了文档,而该文档没有太多信息,我将举一个例子来说明动态模式的 @Query 注释有多好:

@Query(value = "{'attributes.age' : ?0}")
List<User> findAllByAttributesAge(int age);

此外,您还可以查询眼睛颜色:

@Query(value = "{'attributes.eye.color' : ?0}")
List<User> findAllByAttributesEyeColor(String color);

正如其他答案文档所说,您可以过滤结果,并只接收您喜欢的文档部分:

// It will return the users with only name and last name
@Query(value = "{'attributes.age' : ?0}", fields = "{ name : 1, lastName : 1 }")
List<User> findAllByAttributesAge(int age);

关于java - 带有 spring 数据的 mongodb 查询键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com