Java Spring data MongoDB无法在组聚合中映射\u id
我使用SpringDataMongoDB生成一个聚合查询。我曾经这样做过:Java Spring data MongoDB无法在组聚合中映射\u id,java,mongodb,spring-data,spring-data-mongodb,Java,Mongodb,Spring Data,Spring Data Mongodb,我使用SpringDataMongoDB生成一个聚合查询。我曾经这样做过: // 5. Rejoin the array with group. group("email", "name", "surname", "birthday", "creationTime", "updateTime", "technology") .push(SCORES_FIELD).as(SCORES_FIELD)); 生成的步骤(在日志中)如下所示: 这非常好,我已经在Mongo shell上测试了它,并给
// 5. Rejoin the array with group.
group("email", "name", "surname", "birthday", "creationTime", "updateTime", "technology")
.push(SCORES_FIELD).as(SCORES_FIELD));
生成的步骤(在日志中)如下所示:
这非常好,我已经在Mongo shell上测试了它,并给出了我想要的
问题是,当我对Spring数据执行相同操作时,email字段(Mongo中的_id字段)被映射为null。我的映射可能有问题,但我还没有弄清楚到底是什么。模型如下:
@Document(collection = "user")
public class User implements UserDetails {
private static final long serialVersionUID = 1L;
private String name;
private String surname;
private LocalDate birthday;
@Id
@Field("_id")
private String email;
private Collection<? extends GrantedAuthority> authorities;
private String password;
private Set<Score> scores;
private LocalDateTime creationTime;
private LocalDateTime updateTime;
private String technology;
// Getters and setters, hashmap, equals and toString
}
@文档(collection=“user”)
公共类用户实现UserDetails{
私有静态最终长serialVersionUID=1L;
私有字符串名称;
私家姓;
私人生日;
@身份证
@字段(“\u id”)
私人字符串电子邮件;
私人收藏推广我的评论以回答问题
无法将_id映射到电子邮件中,因为group stage在_id文档中返回多个键。previousOperation()
只是从以前的组操作返回_id的方便方法。您可以尝试更改为group(“email”).first(“name”).as(“name”)…
,看看是否有帮助
我希望spring阅读模型中的字段注释,并立即将_id字段映射回email。类似于组(字段(“姓名”、“姓氏”、“生日”、“创建时间”、“更新时间”、“技术”)。和(“email”,previousOperation()).push(分数字段)。as(分数字段))
谢谢您的帮助,但这给了我一个错误:找不到用户类型的属性id。id应该映射到电子邮件中,所以模型中没有id字段。如果我直接使用and运算符输入“\u id”字段,我会遇到同样的错误。另外,我不明白以前的操作()应该是这样的…JavaDoc说它返回一个指向上一个操作的指针,但实际上它总是返回“\u id”字符串…Np.\u id不能映射到电子邮件中,因为group stage在\u id文档中返回多个键。previousOperation()
只是从以前的组操作返回\u id
的方便方法。您可以尝试更改为组(“电子邮件”).first(“name”).as(“name”)..
看看是否有帮助。我希望spring阅读模型中的字段
注释并将_id字段映射回电子邮件。你完全正确,我没有想到。非常感谢。如果你愿意留下答案,我会接受。这确实解决了问题。再次,非常感谢!你能添加代码吗足够了吗?这样有点混乱吗
@Document(collection = "user")
public class User implements UserDetails {
private static final long serialVersionUID = 1L;
private String name;
private String surname;
private LocalDate birthday;
@Id
@Field("_id")
private String email;
private Collection<? extends GrantedAuthority> authorities;
private String password;
private Set<Score> scores;
private LocalDateTime creationTime;
private LocalDateTime updateTime;
private String technology;
// Getters and setters, hashmap, equals and toString
}