弹簧数据 Mongo 嵌套 id 不起作用



Spring Data对待mongo嵌套的"id"属性有区别吗?我解释了我的问题:我有以下结构的集合匹配

"teams":  [
        {
            "id" : "5601",
            "name" : "FC Basel"
        },
        ... // more
    ]

当我想检索所有具有团队id 5601的比赛时,我执行以下查询

db.matches.find({ "teams.id" : "5601"})

它可以完美地工作并返回一些对象。

当我制作方法时

public List<MatchMongo> findByTeams_id(String id);

在我的MatchRepository界面上,我得到0个结果,而有。日志显示

Created query Query: { "teams.id" : "5601"}, Fields: null, Sort: null
find using query: { "teams.id" : "5601"} fields: null for class: class
MatchMongo in collection: matches

因此,他提出的质疑似乎是正确的……:S尝试使用其他字段(例如refere.name)是有效的。

我甚至尝试了@Query注释,但无法使其在中工作

还有其他解决方案吗?这是bug还是我做错了什么?

哦找到了解决方案:

MatchMongo有List<TeamMongo> teams;,我有

@Id
private String id;
@Field(value = "id")
private String teamIdAttr;

所以这个方法应该叫做

public List<MatchMongo> findByTeams_teamIdAttr(String id);

从未想过方法名称应该反映对象属性而不是集合结构

感谢@martin baugartner您的评论帮助解决了这个问题:)

最新更新