我有一个MongoDB实体如下。
public class Test {
@Id
private String id;
private String name;
private String age;
}
字符串
现在,代替“id”,它在文档中创建一个主键“_id”;我想让name成为我文档中的主id。我怎么才能实现呢?请注意,我必须在我的类中保留“private String id”字段。我已经尝试在private String name之上添加@Field(“name”)annotation,但它不起作用。
1条答案
按热度按时间ut6juiuv1#
恐怕不能从文档中删除
_id
字段,因为它是MongoDB中的 mandatory 字段。您可以告诉客户端使用什么值来填充_id
,但您不能完全删除该字段。不过,好消息是,您可以将任何字段标记为主键。只需将
@Id
注解添加到name
字段。这将在MongoDB文档中内部Mapname
到_id
。在你的例子中,你必须像这样构建你的文档:
字符串
下面是MongoDB文档中关于为什么
_id
* 必须 * 是主键的相关页面:每个MongoDB文档中都需要一个字段。_id字段必须具有唯一值。您可以将_id字段视为文档的主键。如果您创建一个没有_id字段的新文档,MongoDB会自动创建该字段并分配一个唯一的BSON ObjectId。
要了解Sping Boot MongoDB库如何将值Map到
_id
,请参考Spring MongoDB documentation:下面概述了将Map到“_id”文档字段的字段:
希望这对你有帮助!
干杯,塔哈尔