我在MongoDB上有一个名为resource的集合。 它有以下文件:
{ "_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" }
在Java代码中,我按如下方式列出它们:
MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate();
List<Resource> resourceList = mongoOperations.findAll(Resource.class);
return resourceList;
我如何获取按ID排序的这些文档!
答案 0 :(得分: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;
当然你可以迭代结果列表并手动排序,甚至使用Collection.sort方法,但我想如果你在属性中有一个索引用于排序,那么mongodb排序会更快结果。
答案 1 :(得分:2)
应该是这样的:
MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate();
List<Resource> resourceList = mongoOperations.findAll(Resource.class).sort({'_id' : 1});
return resourceList;
您需要附加.sort({'_id' : 1})
升序
或.sort({'_id' : -1})
降序。
对于Java:
.sort( new BasicDBObject( "_id" , 1 ) )
来自 echo 的解决方案:
DBCursor dbCursor = mongoOperations.getCollection(RESOURCE_COLLECTION_NAME).find().sort(new BasicDBObject("_id", 1));
List<DBObject> dbObjects = dbCursor.toArray();
List<Map> items = new ArrayList<Map>(dbCursor.length());
for (DBObject dbObject : dbObjects) {
Map map = dbObject.toMap();
items.add(dbObject.toMap());
}