今回は MongoDB で 最大値 または 最小値 を取得する方法についてまとめます。
前提データ
test
データベース の sample
コレクション に以下のようなデータがある前提で、
price
の最大値または最小値を取得するサンプルを見ていきます。
1 2 3 4 5 6 7 8 9 10 11 12 | > use test switched to db test > db.sample.find() { "_id" : ObjectId( "59fc8cca060ed81c5c835c7a" ), "item" : "ABC" , "price" : 120 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c7b" ), "item" : "ABC" , "price" : 120 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c7c" ), "item" : "BCD" , "price" : 150 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c7d" ), "item" : "ABC" , "price" : 120 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c7e" ), "item" : "BCD" , "price" : 150 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c7f" ), "item" : "BCD" , "price" : 150 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c80" ), "item" : "ABC" , "price" : 120 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c81" ), "item" : "BCD" , "price" : 150 } { "_id" : ObjectId( "59fc8cca060ed81c5c835c82" ), "item" : "CDE" , "price" : 180 } |
最大値を取得するサンプルコード
複雑なことはする必要がありません。
昇順にソート (L.8) して最初の1件 (L.10) を取得すれば、最大値が取得できます。
サンプルコードでは最後に $project
を行っていますが、取得されるデータ量が少なければあえて実行する必要はないかもしれません。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var MongoClient = require( "mongodb" ).MongoClient; var moment = require( "moment" ); MongoClient.connect(CONNECTION_URL).then((db) => { db.collection( "sample" ).aggregate([{ $sort: { price: -1 } }, { $limit: 1 }, { $project: { _id: 0, price: 1 } }]).toArray((err, docs) => { if (err) throw err; console.log(JSON.stringify(docs)); }); }); |
実行結果
1 | [{ "price" :180}] |
最小値を取得するサンプルコード
上記の「最大値を取得するサンプルコード」において $sort: { price: -1 }
を { price: 1 }
とすれば最小値を取得できます。
要するにソート順を変更するだけです。
サンプルコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | var MongoClient = require( "mongodb" ).MongoClient; var moment = require( "moment" ); MongoClient.connect(CONNECTION_URL).then((db) => { db.collection( "sample" ).aggregate([{ $sort: { price: 1 } }, { $limit: 1 }, { $project: { _id: 0, price: 1 } }]).toArray((err, docs) => { if (err) throw err; console.log(JSON.stringify(docs)); }); }); |
実行結果
1 | [{ "price" :120}] |
今回は MongoDB で 最大値 または 最小値 を取得する方法 についてまとめました。 ポイントは「sort → limit」で取得することです。 参考になったでしょうか?
本記事がお役に立つと嬉しいです!!
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!