【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()メソッド、より柔軟な集計や加工を行いたい場合はアグリゲーションフレームワークの活用も検討するとよいでしょう。
-
MongoDBで配列型フィールドの値を除外する方法
MongoDBで配列型フィールドの値を除外するには? 配列型フィールド内の値(要素の中身)を除外したい場合は、MongoDBのdelete()を使用します。この記事では、実際にコレクションを作成し、配列の各要素から特定のフィールドを削除する手順をサンプルコード付きで解説します。 1. サンプルコレクションの作成 まず、insertOne()メソッドを使ってドキュメントを挿入し、コレクションを作成しましょう。 > db.demo464.insertOne( ... { ... id : 101, ... details: [ ... { ...
-
MongoDBで特定のフィールド値のみを更新するクエリの書き方
MongoDBでは、update()メソッドと$set演算子を組み合わせることで、ドキュメント全体を置き換えることなく、特定のフィールドの値だけを効率的に更新できます。本記事では、実際のコード例を通じて、その具体的な手順をわかりやすく解説します。 1. コレクションとドキュメントの作成 まずは例として、insertOne()メソッドを使って「demo557」というコレクションにドキュメントを挿入します。 > db.demo557.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e8