Sort documents in collections while fetching

后端 未结 2 1661
有刺的猬
有刺的猬 2021-01-20 11:18

I have a collection called at MongoDB called resource. It has the following documents:

{ \"_id\" : \"Abb.e\", \"_class\" : \"Resource\", \"resourceEmail\" :          


        
相关标签:
2条回答
  • 2021-01-20 11:36

    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()); 
    }
    
    0 讨论(0)
  • 2021-01-20 11:40

    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.

    0 讨论(0)
提交回复
热议问题