MongoDB文档的最大/最小值

时间:2013-01-20 15:11:37

标签: spring mongodb spring-data nosql

我使用Spring Data访问MongoDB数据库。 如何使用MongoTemplate类在其中一个字段中检索max值最大值的文档。 谢谢!

2 个答案:

答案 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);