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

【MongoDB】find()とforEach()でフィールドの値のみを取得する方法

MongoDBで特定のフィールドの値だけを取得したい場合、find()メソッドとforEach()ループを組み合わせることで実現できます。この記事では、サンプルコレクションの作成から値の抽出までを、実際のコード例をもとに手順ごとに解説します。

ステップ1:サンプルコレクションの作成

まずはテスト用のコレクションを作成し、insertOne()メソッドで複数のドキュメントを挿入します。

> db.returnOnlyValueOfFieldDemo.insertOne({"ClientName":"Larry"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ea537d628fa4220163b6e")
}
> db.returnOnlyValueOfFieldDemo.insertOne({"ClientName":"Chris"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ea53bd628fa4220163b6f")
}
> db.returnOnlyValueOfFieldDemo.insertOne({"ClientName":"Robert"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ea541d628fa4220163b70")
}
> db.returnOnlyValueOfFieldDemo.insertOne({"ClientName":"Ramit"});
{
    "acknowledged" : true,
    "insertedId" : ObjectId("5c9ea549d628fa4220163b71")
}

ステップ2:find()メソッドで全ドキュメントを表示する

find()メソッドを使うと、コレクション内のすべてのドキュメントを確認できます。まずは現在のデータの中身を見てみましょう。

> db.returnOnlyValueOfFieldDemo.find().pretty();

このクエリを実行すると、以下のような出力が得られます。

{ "_id" : ObjectId("5c9ea537d628fa4220163b6e"), "ClientName" : "Larry" }
{ "_id" : ObjectId("5c9ea53bd628fa4220163b6f"), "ClientName" : "Chris" }
{ "_id" : ObjectId("5c9ea541d628fa4220163b70"), "ClientName" : "Robert" }
{ "_id" : ObjectId("5c9ea549d628fa4220163b71"), "ClientName" : "Ramit" }

ご覧のとおり、通常のfind()では自動生成された_idも一緒に返されます。そのため、フィールドの値のみを取り出すにはひと工夫が必要です。

ステップ3:forEach()ループで値のみを抽出する

フィールドの値だけを取得するには、まず空の配列を宣言し、forEach()ループで各ドキュメントから目的の値を取り出して、その配列へ順番に格納していきます。

> var output = []
> db.returnOnlyValueOfFieldDemo.find().forEach(function(document) {output.push(document.ClientName) })

値は変数outputに配列として保存されています。Mongoシェルで変数名を入力するだけで、中身を簡単に確認できます。

> output

実行すると、次のような結果が表示されます。

[ "Larry", "Chris", "Robert", "Ramit" ]

まとめ

find().forEach()と空の配列を組み合わせることで、MongoDBから特定フィールドの値のみをシンプルな配列形式で取得できます。なお、重複を除いて値を取得したい場合はdistinct()メソッド、より柔軟な集計や加工を行いたい場合はアグリゲーションフレームワークの活用も検討するとよいでしょう。

  1. MongoDBで配列型フィールドの値を除外する方法

    MongoDBで配列型フィールドの値を除外するには? 配列型フィールド内の値(要素の中身)を除外したい場合は、MongoDBのdelete()を使用します。この記事では、実際にコレクションを作成し、配列の各要素から特定のフィールドを削除する手順をサンプルコード付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成しましょう。 > db.demo464.insertOne( ... { ... id : 101, ... details: [ ... { ...

  2. MongoDBで特定のフィールド値のみを更新するクエリの書き方

    MongoDBでは、update()メソッドと$set演算子を組み合わせることで、ドキュメント全体を置き換えることなく、特定のフィールドの値だけを効率的に更新できます。本記事では、実際のコード例を通じて、その具体的な手順をわかりやすく解説します。 1. コレクションとドキュメントの作成 まずは例として、insertOne()メソッドを使って「demo557」というコレクションにドキュメントを挿入します。 > db.demo557.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e8