可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I have a collection called at MongoDB called resource. It has the following documents:
{ "_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" }
At Java code,I list them as follows:
MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate(); List<Resource> resourceList = mongoOperations.findAll(Resource.class); return resourceList;
How could I fetch these documents sorted by ID !
回答1:
As you're using Spring Data, you could use a Query object to query all documents in the colletion and sort the results.
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;
Of course that you could iterate the list of results and sort it manually, or even use Collection.sort method, but I think if you have an index in the property that you're using to sort, it's faster to mongodb sort the results.
回答2:
Should be something like this:
MongoOperations mongoOperations = mongoConfiguration.getMongoTemplate(); List<Resource> resourceList = mongoOperations.findAll(Resource.class).sort({'_id' : 1}); return resourceList;
You need to append .sort({'_id' : 1})
for ascending order or .sort({'_id' : -1})
for descending order.
For Java:
.sort( new BasicDBObject( "_id" , 1 ) )
Solution from 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()); }