我无法找到明确的答案,我希望有人可以帮助我。我想在Mongo中“引用”的对象上创建复合索引。我显然遇到了错误,我将在代码片段下面进行描述。
@Entity
public class Address {
public Address (String street, String City, String state, String zip) {
this.street = street;
this.city = city;
this.state = state;
this.zip = zip;
}
// Getters and Setters
@Id private ObjectId id;
private String street;
private String city;
private String state;
private String zip;
}
@Entity
@Indexes( @Index("location.city, name") )
public class Team {
public Team (String sport, String name, Address location) {
this.sport = sport;
this.name = name;
this.location = location;
}
// Getters and Setters
@Id private ObjectId id;
private String sport;
private String name;
@Reference private Address location;
@Reference private List<Player> players;
}
我得到的错误是:
线程“main”com.google.code.morphia.query.ValidationException中的异常:在验证 - 位置时,无法在'com.company.test.Team'中找到过去'位置'的点符号。城市
所以我想我的问题是:我收到此错误是因为“地址”是“团队”中的引用还是我错过了其他内容?
感谢您的反馈。
答案 0 :(得分:0)
是的,这就是原因。您的位置字段引用了不同的集合 - 即“地址”集合中的“城市”字段。您可以选择在团队中嵌入Address - 这将保存Team集合中的所有内容,并允许您将“location.city”索引添加到“Team”类/集合中。
答案 1 :(得分:0)
如果按照嵌套在引用内的字段进行过滤: field access for lists of objects in a class via morphia in mongodb
如果仅按引用ID过滤:.filter(“location”,new Key(Address.class,id))