我有一个 MongoDB 实体,如下所示。
public class Test {
@Id
private String id;
private String name;
private String age;
}
现在,代替“id”,它在文档中创建主键“_id”;我希望该名称成为我的文档中的主要 ID。我怎样才能做到这一点?请注意,我必须在班级中保留“私有字符串 id”字段。我已经尝试在私有字符串名称之上添加 @Field("name") 注释,但它不起作用。
恐怕无法从文档中删除
_id
字段,因为它是 MongoDB 中的 强制字段。
来自 MongoDB 文档:
每个 MongoDB 文档中都需要的字段。 _id 字段必须具有唯一值。您可以将 _id 字段视为文档的主键。如果您创建一个没有 _id 字段的新文档,MongoDB 会自动创建该字段并分配一个唯一的 BSON ObjectId。
不过,好消息是您可以将任何字段标记为主键。只需将
@Id
注释添加到 name
字段即可。这将在内部将 name
映射到 MongoDB 文档中的 _id
。
请参阅 Spring MongoDB 文档,了解有关此映射具体如何工作的更多信息。由于链接有时可能(并且将会)失效,因此以下是 Spring 文档中的相关信息:
以下概述了哪些字段将映射到“_id”文档字段:
- 用@Id(org.springframework.data.annotation.Id)注释的字段将映射到'_id'字段。
- 没有注释但名为 id 的字段将映射到“_id”字段。
在您的情况下,您必须像这样构建文档:
public class Test {
@Id
private String name;
private String id;
private String age;
}
希望这有帮助!
干杯, 塔哈尔