如何使用 mongoDB 和 spring 数据在嵌入文档中创建一个 id

how to create an id within the embedded document using mongoDB and spring data

我正在尝试在嵌入式文档中设置一个 ID。在 mongoDB 的下一级,使用 spring 数据。 假设我有一个用户文档,每个用户都有多个会话(一对多),我想为会话获取一个自动生成的唯一 ID。我该怎么做?我已尝试为用户和会话创建以下实体,但会话中的 ID 始终为空!请帮助

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class User {

    @Id
    private String id;
    private String emailId;
    private String firstName;
    private String lastName;
    private ArrayList<Session> sessions;
}

public class Session {

    @Id // i like to make this id auto generated and unique
    private String id;
    private String status;
    private String title;
//assume all Args, Getters and setters are exists

您需要手动更新此唯一 ID,因为 spring-data-mongodb 中似乎没有执行此操作的自动功能。

有点像;

public Integer generateUniqueId() {
    Session latestSession = sessionRepository.findTopOrderByIdDesc(); // latest session
    return Optional.ofNullable(latestSession).map(Session::getId).orElse(-1) + 1;
}

其中唯一 ID 只是一个递增的计数器...

& 在保存之前将此值设置为新的 Session

newSession.set(generateUniqueId());
sessionRepository.save(newSession);

有关详细信息,请查看 here