我使用Spring Data访问MongoDB数据库。 如何使用MongoTemplate类在其中一个字段中检索max值最大值的文档。 谢谢!
答案 0 :(得分:1)
使用排序和限制的组合来模拟最小值和最大值:
db.test.insert({a:1})
db.test.insert({a:2})
db.test.insert({a:3})
db.test.find()。sort({a:1})。limit(1)
db.test.find()。sort({a:-1})。limit(1)
sort({a:1})是一个字段上的升序(最小 - 第一)排序,然后只返回第一个文档,该文档将是该字段的最小值。
sort({a:-1})是一个字段的降序(最大 - 第一)排序,然后只返回第一个文档,这将是该字段的最大值。
答案 1 :(得分:1)
Rinku的回答是正确的,但不是春天。你可以在spring-data-mongodb中做到这一点。如果排序字段被索引(或@Id字段),Mongo将优化排序/限制组合。否则它仍然相当不错,因为它将使用top-k算法并避免全局排序(mongodb sort doc)。这来自Mkyong's example但我首先进行排序并将限制设置为1秒。 / p>
Query query = new Query();
query.with(new Sort(Sort.Direction.DESC, "idField"));
query.limit(1);
MyObject maxObject = mongoTemplate.findOne(query, MyObject.class);