如何使用 Spring Data Mongo 在 MongoDB 文档中添加自定义主键

问题描述 投票:0回答:1

我有一个 MongoDB 实体,如下所示。

public class Test {
 @Id
 private String id;
 private String name;
 private String age;
}

现在,代替“id”,它在文档中创建主键“_id”;我希望该名称成为我的文档中的主要 ID。我怎样才能做到这一点?请注意,我必须在班级中保留“私有字符串 id”字段。我已经尝试在私有字符串名称之上添加 @Field("name") 注释,但它不起作用。

java mongodb spring-boot spring-data-mongodb
1个回答
0
投票

恐怕无法从文档中删除

_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;
}

希望这有帮助!

干杯, 塔哈尔

© www.soinside.com 2019 - 2024. All rights reserved.