2013-01-20 81 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);