如何从MongoTemplate.findAll()中排序结果?

时间:2015-09-22 22:13:58

标签: spring-data-mongodb

我目前有一个查询,它使用MongoTemplate的findAll()方法返回集合中的所有文档。我想对这些结果进行排序,但看不到任何方法。我看到我可以使用带有Query参数的find()并调用.with(排序排序),但在这种情况下,如何设置Query以返回所有文档?我可以使用任何一种方法。

2 个答案:

答案 0 :(得分:5)

Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "_id"));

List<MyClass> myClassList=  mongoTemplate.find(query, MyClass.class);

答案 1 :(得分:2)

空Query将表现为findAll()。就像你可以在mongo shell中编写:db.myCollection.find({})你可以在java mongdb驱动程序中编写一个emypty Query。

工作示例代码为:

public static void main(String[] args) throws UnknownHostException
{
    ServerAddress address = new ServerAddress("localhost", 27017);
    MongoClient client = new MongoClient(address);
    SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(client, "mydatabase");
    MongoTemplate mongoTemplate = new MongoTemplate(simpleMongoDbFactory);
    Query query = new Query().with(new Sort("_id", "-1"));
    List<MyClass> allObjects = mongoTemplate.find(query, MyClass.class);
    System.out.println(allObjects);
}