我试图理解在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;
}
我的用例是最终基于value
和description
字段从存储库中进行搜索,因此最好了解一下如何在这两个字段中构造数据。这些注释中可以使用哪些选项?
答案 0 :(得分:1)
@Indexed注释将在您的mongo服务器中的该字段上添加一个索引。它带有一个可选的字符串参数,该参数将是索引名称,而与字段名称无关。您应该只索引将用于过滤文档的那些字段。
如果要在Java代码和MongoDB集合中使用不同的名称,请使用@Field。
例如。
r = { "[": "", ".": "\n", "]": ""}
for x,y in r.items():
out = out.replace(x, y)
在这种情况下,在您的MongoDB集合中,您会发现字段名称为“ desc”,而在Java代码中,您会将其引用为“描述”
@Field("desc")
private String description;
在上述情况下,无需使用@Field批注