我有一个这样的简单文件:
@Entity("users")
@Indexes(@Index(fields = {@Field("lastName"), @Field("firstName")}))
public class User extends Model {
@Indexed public String email;
public String firstName;
@Indexed public String lastName;
public String employer;
}
然后有一个搜索功能,可以在名称(第一个/最后一个)和/或雇主上查找条目。
目标是按姓氏和名字对结果进行排序,完全类似于电话簿的呈现方式。
我的搜索查询如下:
q.field("employer").containsIgnoreCase(input);
q.order("lastName,firstName");
q.limit(25);
q.offset(start);
现在发生的事情是结果按q.order()
行中指定的第一个字段进行排序,但未发生的事情是对lastName
和firstName
进行排序。
据我所知,对多列进行排序时,需要有一个复合索引,我确实为此集合定义了索引。所以我只是想念我所缺少的东西。
答案 0 :(得分:1)
我使用Datastore Morphia类,排序工作完美
npm