2016-10-23 24 views
1

私はMongoDBを初めて使用しており、非常に長い時間の間、java apisを使用して複数のソートを取得することに苦労しています。MongoDb複数のソート

だから私のデータは次の形式である:私はタイムスタンプに基づいて、最新の10件のレコードを取得しようとしています

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

。一度私は名前とタイムスタンプに基づいて結果を並べ替えるしたいと思う。これは私の最近の10のレコードの正しいソートoutpt与え

:。 .sort(新しい文書(「タイムスタンプ」、-1))リミット(10)

しかし、私はより多くのソートパラメータを追加する場合には、ソート全体の結果セット。

私は最近の10レコードを取得しようとしていますが、結果が出たら、タイムスタンプで昇順にソートしたいのですが、ネクタイの場合は名前で並べ替えることにします。

答えて

0

あなたがしようとしていることは不可能だと思われます。 mongo docsに記載されているように、ソートは常に制限の前に実行されます。だから、

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

のようにすると、最初のソートが2番目のソートによって上書きされます。 これはあなたの最善の策は、モンゴから10件の最新のレコードをフェッチして、あなたが(タイムスタンプの昇順と名の昇順)を必要とするために、Javaコードで再びそれらをソートすることであることを、

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

だから私が思うにちょうど同じです。