MongoDB
 Computer >> コンピューター >  >> プログラミング >> MongoDB

MongoDBでクエリ結果を変数に格納する方法

MongoDBのクエリ結果を変数に代入するには

MongoDBでクエリの実行結果を変数に格納したい場合は、aggregate()メソッドを使用します。ここでは、集計パイプラインの結果をJavaScriptの変数に保存し、その値を取り出す手順を具体的に解説します。

まずはサンプル用のコレクションを作成し、ドキュメントを挿入していきましょう。

> db.demo142.insertOne({"Value":50});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32e9c6fdf09dd6d08539b2")
}
> db.demo142.insertOne({"Value":45});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32e9cafdf09dd6d08539b3")
}
> db.demo142.insertOne({"Value":60});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32e9cdfdf09dd6d08539b4")
}
> db.demo142.insertOne({"Value":55});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32e9d0fdf09dd6d08539b5")
}
> db.demo142.insertOne({"Value":50});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5e32e9d9fdf09dd6d08539b6")
}

コレクション内の全ドキュメントを確認する

挿入したドキュメントが正しく登録されているか、find()メソッドですべてのデータを表示して確認します。

> db.demo142.find();

上記のコマンドを実行すると、次のような出力が得られます。

{ "_id" : ObjectId("5e32e9c6fdf09dd6d08539b2"), "Value" : 50 }
{ "_id" : ObjectId("5e32e9cafdf09dd6d08539b3"), "Value" : 45 }
{ "_id" : ObjectId("5e32e9cdfdf09dd6d08539b4"), "Value" : 60 }
{ "_id" : ObjectId("5e32e9d0fdf09dd6d08539b5"), "Value" : 55 }
{ "_id" : ObjectId("5e32e9d9fdf09dd6d08539b6"), "Value" : 50 }

クエリ結果を変数にプッシュする

それでは本題の、クエリ結果を変数に格納するクエリを見ていきましょう。aggregate()の$groupステージで$max演算子を使って「Value」フィールドの最大値を求め、その結果をtoArray()で配列化して変数に代入します。

> var query = db.demo142.aggregate( 
...    { "$group": { "_id": null, "MaxValue": { "$max": "$Value" } } }
... ]);
> var largestValue= query.toArray()[0]["MaxValue"];
> printjson(largestValue);

このクエリを実行すると、最大値が変数largestValueに格納され、次の出力が得られます。

60

ポイント解説

  • $group + $max:_idをnullに設定することでコレクション全体を1つのグループとして扱い、Valueフィールドの最大値を計算しています。
  • toArray():カーソルとして返される集計結果を配列に変換します。これによりインデックスを指定して特定の値へアクセス可能になります。
  • [0]["MaxValue"]:配列の先頭要素からMaxValueフィールドの値(この例では60)を取り出しています。

この手法を応用すれば、最小値($min)、合計値($sum)、平均値($avg)など、さまざまな集計結果を変数に格納して、後続の処理で活用することができます。

  1. MongoDBで配列に要素を追加できない?$push演算子の使い方を解説

    MongoDBで配列にプッシュするには MongoDBで配列に要素を追加(プッシュ)したい場合は、$push演算子を使用します。ここでは、実際にドキュメントを含むコレクションを作成し、手順を追いながら解説していきます。 1. コレクションの作成 まず、insertOne()メソッドを使ってサンプルドキュメントを含むコレクションを作成しましょう。 > db.demo445.insertOne({ListOfFriends:[Robert,Mike,Sam,Carol,David,Mike]}); { acknowledged : true, insertedId : Obje

  2. MongoDBで大文字と小文字を区別せずに検索する方法($regexの使い方)

    MongoDBで大文字と小文字を区別しない(ケースインセンシティブな)検索を実行したい場合は、find()メソッドの中で正規表現($regex)を使用します。基本となる構文は以下の通りです。db.demo572.find({yourFieldName : { $regex : /^yourValue$/i}});正規表現のポイントこの構文で重要なのは、パターンの末尾に付ける「i」オプションです。このフラグを指定することで、マッチング時に大文字と小文字の違いが無視されます。また、^(先頭)と$(末尾)で値を囲むことで、部分一致ではなく完全一致の検索になります。それでは、実際にサンプルコレクション