3

私は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でソートされたこれらのドキュメントを取得するにはどうすればよいですか?

4

2 に答える 2

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で並べ替える方が速いと思います。

于 2012-12-16T18:19:14.237 に答える
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 ) )

エコーからの解決策:

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()); 
}
于 2012-12-15T20:55:09.930 に答える