2017-01-26 13 views
0

すべてのNodeJS/MongoDB/Mongooseテクニックで、imは配列から反復されない値を取得しようとしていますが、imは2つの値でデータをソートします。 位置およびcreated_atマングースソートと非反復値の取得

これは、コード

Temperature.find().sort({'location': -1,'created_at': -1}).exec(function(err, results){ 
    res.json(results); 
}); 

がどのように私は配列から最初の非繰り返し値を得ることができるのですか?

これは配列です:

[ { 
    temperature: '24', 
    humidity: '15', 
    location: 'Camara4', 
    created_at: 2017-01-24T21:40:21.552Z 
    }, 
    { 
    temperature: '23', 
    humidity: '15', 
    location: 'Camara4', 
    created_at: 2017-01-24T01:18:26.328Z 
    }, 
    { 
    temperature: '15', 
    humidity: '12', 
    location: 'Camara3', 
    created_at: 2017-01-26T18:53:34.447Z, 
    }, 
    { 
    temperature: '36', 
    humidity: '11', 
    location: 'Camara3', 
    created_at: 2017-01-24T21:41:07.094Z, 
    }, 
    { 
    temperature: '35', 
    humidity: '11', 
    location: 'Camara3', 
    created_at: 2017-01-24T21:41:03.092Z, 
    } 
] 

と私は期待して:

[ { 
    temperature: '24', 
    humidity: '15', 
    location: 'Camara4', 
    created_at: 2017-01-24T21:40:21.552Z 
    }, 
    { 
    temperature: '15', 
    humidity: '12', 
    location: 'Camara3', 
    created_at: 2017-01-26T18:53:34.447Z, 
    }, 
] 

答えて

1

あなたは集約フレームワークを使用する必要があります。

$grouplocationキー$firstの演算子を使用して、各グループのソート順から最初の値を選択します。

Temperature.aggregate({ 
    "$sort": { 
     'location': -1, 
     'created_at': -1 
    } 
}, { 
    $group: { 
     "_id": "$location", 
     "result": { 
      "$first": "$$ROOT" 
     } 
    } 
}).exec(function(err, results) { 
    res.json(results); 
}); 

出力:解明と例えば

{ 
     "_id" : "Camara4", 
     "result" : { 
       "temperature" : "24", 
       "humidity" : "15", 
       "location" : "Camara4", 
       "created_at" : ISODate("2017-01-24T21:40:21.552Z") 
     } 
} 
{ 
     "_id" : "Camara3", 
     "result" : { 
       "temperature" : "15", 
       "humidity" : "12", 
       "location" : "Camara3", 
       "created_at" : ISODate("2017-01-26T18:53:34.447Z") 
     } 
} 
+0

おかげでたくさん! –

+0

クエリは期待どおりに機能していませんか? – Veeram

+0

クエリがソートされていません。 –

関連する問題