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

MongoDBクエリから特定の値のリストを返すことは可能ですか?map()メソッドの使い方

はい、可能です。map()メソッドを使用すれば、MongoDBのクエリ結果から特定のフィールドの値だけを抽出し、リスト(配列)として取得できます。

まずは、ドキュメントを含むコレクションを作成してみましょう。

> db.listOfSpecificValuesDemo.insertOne({"StudentName":"John"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cefcc8fef71edecf6a1f6bb")
}
> db.listOfSpecificValuesDemo.insertOne({"StudentName":"Chris"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cefcc94ef71edecf6a1f6bc")
}
> db.listOfSpecificValuesDemo.insertOne({"StudentName":"Robert"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cefcc98ef71edecf6a1f6bd")
}
> db.listOfSpecificValuesDemo.insertOne({"StudentName":"David"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5cefcc9cef71edecf6a1f6be")
}

次に、find()メソッドを使って、コレクション内のすべてのドキュメントを表示してみます。

> db.listOfSpecificValuesDemo.find();

出力

{ "_id" : ObjectId("5cefcc8fef71edecf6a1f6bb"), "StudentName" : "John" }
{ "_id" : ObjectId("5cefcc94ef71edecf6a1f6bc"), "StudentName" : "Chris" }
{ "_id" : ObjectId("5cefcc98ef71edecf6a1f6bd"), "StudentName" : "Robert" }
{ "_id" : ObjectId("5cefcc9cef71edecf6a1f6be"), "StudentName" : "David" }

それでは本題です。クエリ結果から特定の値(ここでは StudentName フィールド)のリストを返すには、find()で取得したカーソルに対して map() を呼び出し、各ドキュメントから目的の値を返す関数を渡します。

> db.listOfSpecificValuesDemo.find().map(function(myDocument){ return myDocument.StudentName });

出力

[ "John", "Chris", "Robert", "David" ]

このように、find() の結果に対して map() を適用するだけで、4件のドキュメントから「John」「Chris」「Robert」「David」という学生名だけを簡単に配列として取り出せます。

なお、同様の処理は forEach() を使って手動で配列に値を追加する方法や、集計フレームワーク(Aggregation Pipeline)の $group 演算子を利用する方法でも実現可能です。用途に応じて最適な手法を選択するとよいでしょう。

  1. MongoDBで特定フィールドの値を合計するクエリの書き方(aggregate + $sum)

    MongoDBでは、aggregate()メソッドと$group・$sum演算子を組み合わせることで、コレクション内のドキュメントに含まれる特定フィールドの値を簡単に合計できます。この記事では、実際のコマンド例を使いながら手順をわかりやすく解説します。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成します。ここではdemo677というコレクションに、Valueフィールドを持つ4件のドキュメントを挿入します。> db.demo677.insertOne({Value:10}); { acknowledged : true, insertedId :

  2. MongoDBドキュメントから特定の値をフィルタリングする方法

    MongoDBドキュメントから特定の値をフィルタリングする方法MongoDBでドキュメント内の配列から特定の値を抽出したい場合は、集計パイプラインで $filter を使用します。この記事では、実際にコレクションを作成し、特定の条件に一致する要素だけをフィルタリングする手順を、サンプルコードとともに解説します。1. サンプルコレクションの作成まず、insertOne() メソッドを使って、配列フィールドを含むドキュメントを持つコレクションを作成します。 db.demo751.insertOne( ... { ... _id: 101, ... details: [