2016-10-23 106 views
1

我是新來的MongoDB,並且一直在使用java apis進行多種排序,現在已經很久了。MongoDb多種排序

所以我的數據是形式:

{ 
    "id":1, 
    "name":"sam", 
    "timestamp":"2015-10-24 19:50:53" 
} 

我想獲得最新的10條記錄基於時間戳。一旦我有了,我想根據名稱和時間戳對結果進行排序。

這給我的最近10個記錄正確的排序OUTPT: 的.sort(新文件(「時間戳」,-1))的限制(10)

但是,如果我添加更多的排序參數它的排序整個結果集。

我想獲取最近的10條記錄,一旦我得到結果我想按升序排序時間戳,然後按照名稱排序。

回答

0

看來,你試圖做的事情是不可能的。如mongo docs所述,排序總是在限制之前執行。所以做類似

.sort({timestamp: -1}).limit(10).sort({timestamp: 1, name: 1}) 

只會導致第一類被第二類覆蓋。 這只是相當於

sort({timestamp: 1, name: 1}).limit(10) 

所以我認爲,最好的辦法是來從蒙戈10條最新記錄,然後在你需要(時間戳升序和名升序)爲了在Java代碼中再次對其進行排序。