Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring data MongoDB无法在组聚合中映射\u id_Java_Mongodb_Spring Data_Spring Data Mongodb - Fatal编程技术网

Java Spring data MongoDB无法在组聚合中映射\u id

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上测试了它,并给

我使用SpringDataMongoDB生成一个聚合查询。我曾经这样做过:

// 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

}