Morphia多字段排序不适用于电话簿式排序

时间:2016-11-14 20:28:08

标签: java mongodb morphia

我有一个这样的简单文件:

@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()行中指定的第一个字段进行排序,但未发生的事情是对lastNamefirstName进行排序。

据我所知,对多列进行排序时,需要有一个复合索引,我确实为此集合定义了索引。所以我只是想念我所缺少的东西。

1 个答案:

答案 0 :(得分:1)

我使用Datastore Morphia类,排序工作完美

npm