MongoDBシェルでドキュメントの値を表示・出力する方法
MongoDBシェル(mongo shell)でドキュメント内の特定のフィールド値だけを取り出して表示したい場合、forEach() メソッドと print() 関数を組み合わせるのが便利です。この記事では、実際にコレクションを作成し、ドキュメントの値を出力するまでの手順を順番に解説します。
1. サンプルコレクションの作成
まず、insertOne() メソッドを使って、テスト用のコレクション「printDocuementValueDemo」にドキュメントを3件登録します。
> db.printDocuementValueDemo.insertOne({"InstructorName":"John Smith"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd6804f7924bb85b3f48950")
}
> db.printDocuementValueDemo.insertOne({"InstructorName":"Sam Williams"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd680577924bb85b3f48951")
}
> db.printDocuementValueDemo.insertOne({"InstructorName":"David Miller"});
{
"acknowledged" : true,
"insertedId" : ObjectId("5cd680637924bb85b3f48952")
}
3件とも正常に挿入され、それぞれ一意の ObjectId が割り当てられていることがわかります。
2. find() メソッドで全ドキュメントを確認
次に、find() メソッドに pretty() を組み合わせて、コレクション内のすべてのドキュメントを見やすい形式で表示してみましょう。
> db.printDocuementValueDemo.find().pretty();
実行すると、以下のような結果が出力されます。
{
"_id" : ObjectId("5cd6804f7924bb85b3f48950"),
"InstructorName" : "John Smith"
}
{
"_id" : ObjectId("5cd680577924bb85b3f48951"),
"InstructorName" : "Sam Williams"
}
{
"_id" : ObjectId("5cd680637924bb85b3f48952"),
"InstructorName" : "David Miller"
}
3. forEach() でドキュメントの値だけを出力する
ここからが本題です。ドキュメント全体ではなく、フィールドの値そのものを表示したい場合は、find() の第2引数で射影(projection)を指定し、取得した各ドキュメントに対して forEach() で print() を呼び出します。
> db.printDocuementValueDemo.find(
{ _id : ObjectId("5cd680577924bb85b3f48951") },
{InstructorName: 1, _id:0}
).forEach(function(myDocument) {
print(myDocument.InstructorName);
});
クエリのポイントは以下の通りです。
- 第1引数:検索条件として、対象ドキュメントの _id を ObjectId で指定します。
- 第2引数:射影設定です。「InstructorName: 1」で該当フィールドを含め、「_id: 0」でデフォルトで返される _id フィールドを除外しています。
- forEach():検索結果の各ドキュメントに対してコールバック関数を実行し、print() で InstructorName の値だけをコンソールに出力します。
このクエリを実行すると、以下のようにフィールド名や _id を含まない、値のみが出力されます。
Sam Williams
まとめ
MongoDBシェルでドキュメントの値を直接出力したいときは、「find() + 射影 + forEach() + print()」の組み合わせが基本形となります。射影で不要なフィールドを除き、forEach() 内で必要なプロパティを参照することで、スクリプト処理やログ出力などにも応用できる柔軟なデータ取得が可能になります。
-
MongoDBでドキュメント内の配列から特定の値を削除する方法($pull演算子の使い方)
MongoDBで配列から値を削除したい場合は、$pull 演算子を使用します。$pull は、既存の配列から指定した条件に一致する値(または複数の値)のすべてのインスタンスを取り除くための更新演算子です。1. サンプルコレクションの作成まず、ドキュメントを含むコレクションを作成しましょう。> db.demo535.insertOne( ... { ... studentId : 101, ... studentName : Chris, ... ListOfMailIds : [ ... Chris@gmail.com, ... Chr
-
MongoDBでNumberLong値を出力する方法を解説
MongoDBのNumberLong値を出力する基本方法mongoシェルでは、64ビット整数を扱うためにNumberLong()ラッパーが用意されています。通常のJavaScriptの数値型では正確に表現できない大きな整数値も、NumberLongを使えば安全に保存・操作できます。ここでは、カスタム変数にNumberLong値を格納し、toString()メソッドを使って出力する方法を紹介します。基本構文var anyVariableName = NumberLong(yourLongNumber); yourVariableName.toString();実装例1それでは、実際に上記の構文を