在获取时对集合中的文档进行排序

Ech*_*cho 3 mongodb mongodb-java spring-data-mongodb

我有一个名为resource的MongoDB集合.它有以下文件:

{ "_id" : "Abb.e", "_class" : "Resource", "resourceEmail" : "test1@test.com" }
{ "_id" : "Dasd.tt", "_class" : "Resource","resourceEmail" : "test2@test.com" }
{ "_id" : "Bbb.rr", "_class" : "Resource", "resourceEmail" : "test3@test.com" }
Run Code Online (Sandbox Code Playgroud)

在Java代码中,我将它们列出如下:

 MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate();
  List<Resource> resourceList = mongoOperations.findAll(Resource.class);
  return resourceList;
Run Code Online (Sandbox Code Playgroud)

我怎么能按ID排序这些文件!

小智 8

在使用Spring Data时,可以使用Query对象查询集合中的所有文档并对结果进行排序.

MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate();
Query q = new Query().with(new Sort(Sort.Direction.ASC, "_id"));
List<Resource> resourceList = mongoOperations.find(q, Resource.class);
return resourceList;
Run Code Online (Sandbox Code Playgroud)

当然,您可以迭代结果列表并手动对其进行排序,甚至使用Collection.sort方法,但我认为如果您在属性中使用索引进行排序,则mongodb对结果进行排序会更快.