2013-01-20 83 views
1

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

+0

你能在这个问题上得到一个答案,因为我需要完全相同的结果 –

+0

嗨,请解释一下,你想做什么,我会尽力帮助你 –

+0

你在使用知识库吗 –

回答

1

使用排序和限制的组合来模拟min和max:

db.test.insert({一个:1})
db.test.insert({一个:2})
(){1: 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})是一个字段上的降序(最大优先)排序,然后只返回第一个文档,这将是该字段的最大值。

+3

这是命令行命令,但我使用Java + Spring Data。谢谢! –

0

Rinku的答案是正确的,但不是春天。你可以在spring-data-mongodb中做到这一点。如果排序字段被索引(或@Id字段),Mongo将优化排序/限制组合。否则,它仍然是相当不错的,因为它会使用的top-k算法,避免全球排序(mongodb sort doc),这是从Mkyong's example但我首先做的排序和限制设置为一秒。

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