java - Spring MongoDB - @Indexed 和 @Field 注释之间的区别

标签 java spring mongodb spring-boot

我试图了解在 Java Spring Boot 中定义模型时,@Indexed@Field 这两个不同的注释有何不同。

public class Notation {
    @Id
    private String id;

    @Field("value")
    private String value;

    @Field("description")
    private String description;

    @Field("frequency")
    private int frequency;
}
public class Notation {
    @Id
    private String id;

    @Indexed("value")
    private String value;

    @Indexed("description")
    private String description;

    @Field("frequency")
    private int frequency;
}

我的用例是最终根据 valuedescription 字段从存储库中实现搜索,因此最好了解数据如何由两者组成,以及可以从这些注释中使用哪些选项。

最佳答案

@Indexed 注释将在 mongo 服务器中的该字段上添加索引。它需要一个可选的字符串参数,该参数将是索引名称,与字段名称无关。您应该只对那些将用于过滤文档的字段进行索引。

如果您想在 Java 代码和 MongoDB 集合中使用不同的名称,请使用 @Field。

例如。

@Field("desc")
private String description;

在这种情况下,在 MongoDB 集合中,您会发现字段名称为“desc”,而在 java 代码中您将引用它为“description”

@Field("description")
private String description;

上述情况下,不需要使用@Field注解

关于java - Spring MongoDB - @Indexed 和 @Field 注释之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57105949/

相关文章:

java - 第一次尝试设置测试数据库但得到 com.mysql.jdbc.exceptions.jdbc4.CommunicationsException : Communications link failure

java - Spring Boot 。使用@ConfigurationProperties注解的好处

MongoDB:用户和事件的嵌入式或规范化数据模型

node.js - 在 mongoose 子文档中设置跳过和限制

java - JAXB:从不同继承级别获取标签

java - 在 Java Web 应用程序中运行常规后台事件

java - android中表单程序生成的布局到XML布局

java - getTimestamp() 在 MySQL JDBC 连接器中进行两次时区转换?

java - 无法写入 JSON : failed to lazily initialize a collection of role: com. Managem.model.Region.pays,无法初始化代理 - 无 session

javascript - 如何在更新 mongo 文档时使用变量?