2013-01-20 3 views
1

J'utilise Spring Data pour accéder à la base de données MongoDB. Comment puis-je récupérer au maximum un document avec une valeur maximale dans l'un de ses champs, en utilisant la classe MongoTemplate. Merci!Valeurs max/min avec le document MongoDB

+0

Pouvez-vous Pour obtenir une réponse à ce sujet, car j'ai besoin exactement le même –

+0

Salut. Expliquer, s'il vous plaît, whad voulez-vous faire, je vais essayer de vous aider –

+0

Utilisez-vous des dépôts? –

Répondre

1

utiliser une combinaison de tri et de réponse à émuler min et max:

db.test.insert ({a 1})
db.test.insert ({a: 2})
Db.test.insert ({a: 3})
db.test.find(). Sort ({a: 1}) .limite (1)
db.test.find(). Sort ({a : -1}). Limit (1)
sort ({a: 1}) est un tri ascendant (minimum-first) sur un champ, puis retourne uniquement le premier document, qui sera la valeur minimale pour ce champ. Sort ({a: -1}) est un tri décroissant (maximum-premier) sur un champ, puis retourne uniquement le premier document, qui sera la valeur maximale pour ce champ.

+3

Il s'agit de commandes en ligne de commande, mais j'utilise Java + Spring Data. –

0

La réponse de Rinku est correcte mais pas Spring. Vous pouvez le faire dans spring-data-mongodb. Mongo optimisera les combinaisons tri/limite SI le champ de tri est indexé (ou le champ @Id). Sinon, il est encore assez bon, car il utilisera un algorithme de haut k et éviter le genre global (mongodb sort doc). Ceci est de Mkyong's example mais je le genre d'abord et fixer la limite à une seconde.

Query query = new Query(); 
query.with(new Sort(Sort.Direction.DESC, "idField")); 
query.limit(1); 
MyObject maxObject = mongoTemplate.findOne(query, MyObject.class); 
Questions connexes