MongoDBで配列内の最小値・最大値を取得する方法($min / $max演算子)
MongoDBでは、集計パイプライン(aggregation pipeline)の $min 演算子と $max 演算子を使うことで、配列内のフィールドから最小値と最大値を簡単に取得できます。この記事では、実際にコレクションを作成し、配列内の数値から最小値・最大値を抽出する手順を解説します。
サンプルコレクションの作成
まず、insertOne() メソッドを使って、ドキュメントを含むコレクションを作成します。ここでは、details フィールドが複数のオブジェクトを持つ配列になっています。
> db.demo286.insertOne({"details":[{Value1:70,Value2:50},{Value1:30,Value2:36}]});
{
"acknowledged" : true,
"insertedId" : ObjectId("5e4ac743f49383b52759cbbc")
}登録したドキュメントの確認
find() メソッドを使うと、コレクション内のすべてのドキュメントを表示できます。
> db.demo286.find().pretty();
実行すると、次のような出力が得られます。
{
"_id" : ObjectId("5e4ac743f49383b52759cbbc"),
"details" : [
{
"Value1" : 70,
"Value2" : 50
},
{
"Value1" : 30,
"Value2" : 36
}
]
}この例では、details 配列の中に2つのオブジェクトがあり、それぞれ Value1(70 と 30)と Value2(50 と 36)という数値フィールドを持っています。
$min と $max を使った最小値・最大値の取得クエリ
配列内の値から最小値と最大値を取得するには、aggregate() メソッドと $project ステージを組み合わせます。$min は指定フィールドの最小値を、$max は最大値を返します。
> db.demo286.aggregate([
{
"$project": {
"name": 1,
"MinValue1": { "$min": "$details.Value1" },
"MaxValue2": { "$max": "$details.Value2" }
}
}
])クエリの実行結果
上記のクエリを実行すると、次のような結果が出力されます。
{ "_id" : ObjectId("5e4ac743f49383b52759cbbc"), "MinValue1" : 30, "MaxValue2" : 50 }結果の解説
- MinValue1 : 30 —
details.Value1の値は「70」と「30」なので、その最小値である「30」が返されています。 - MaxValue2 : 50 —
details.Value2の値は「50」と「36」なので、その最大値である「50」が返されています。
このように、$project ステージ内で $min や $max を使えば、配列内のネストされたフィールドに対しても直接最小値・最大値を計算できます。データ分析やレポート作成の際に非常に便利なテクニックなので、ぜひ活用してみてください。
-
PHP7で配列の構造と値を表示する方法|print_r()とvar_dump()の違いを解説
PHPにおける配列(Array)とは、複数の要素を1つの変数にまとめて格納できるデータ構造です。同じ型の値だけでなく、異なる型の要素や、配列の中にさらに配列を格納した「多次元配列」も柔軟に扱えます。 配列の構造や値を確認したい場合、PHPではvar_dump() と print_r() という2つの関数が利用できます。どちらも配列の中身を人間が読みやすい形式で出力できるため、開発時のデバッグで広く使われています。 print_r() と var_dump() の違い print_r(): 変数の情報を人間が読みやすい形式で表示する関数です。配列の場合はキーと要素が対応づけられた形で出力されます
-
Pythonのmax()とmin()関数:数値・文字列の最大値と最小値を求める方法
データ処理プログラムでは、リスト内の値から最大値や最小値を求めたい場面が非常によくあります。Pythonには、こうした処理を行うための組み込み関数として max() と min() が用意されており、数値だけでなく文字列にも対応しています。ここでは、それぞれの使い方を具体例とともに解説します。数値のリストから最大値・最小値を取得するまず、整数と浮動小数点数が混在した数値のリストを用意します。max() と min() は、データ型が混在していても適切に比較を行い、最大値と最小値を正しく返します。サンプルコードx=[10,15,25.5,3,2,9/5,40,70] print(Maximum