MongoDBスクリプトでオブジェクトをコンソールに出力する方法
MongoDBスクリプトでオブジェクトをコンソールに表示するには
MongoDBのスクリプト内でオブジェクトをコンソールに出力したい場合、主に2つの方法があります。1つ目は printjson() メソッドを使う方法、2つ目は print() 関数と JSON.stringify() を組み合わせる方法です。それぞれの構文と実際の出力例を見ていきましょう。
方法1:printjson() メソッドを使う
printjson() は、オブジェクトを見やすい整形された形式(pretty-print)でコンソールに出力してくれる便利なメソッドです。基本の構文は以下の通りです。
printjson({ "フィールド名": 値, ... });それでは、実際にオブジェクトを出力してみましょう。次のようなクエリを実行します。
> printjson({"UserId":101,"UserName":"John","UserCoreSubject":["Java","MongoDB","MySQL","SQL Server"]});実行結果は以下のようになります。
{
"UserId" : 101,
"UserName" : "John",
"UserCoreSubject" : [
"Java",
"MongoDB",
"MySQL",
"SQL Server"
]
}このように、printjson() を使うと各フィールドがインデント付きで整形されて表示されるため、ネストされた配列やドキュメントの内容もひと目で確認できます。
方法2:print() と JSON.stringify() を組み合わせる
もう1つの方法は、print() 関数と JSON.stringify() を組み合わせるやり方です。この場合、オブジェクトはJSON形式の文字列として1行で出力されます。
print(JSON.stringify({ "フィールド名": 値, ... }));先ほどと同じオブジェクトに対して実行してみます。
> print(JSON.stringify({"UserId":101,"UserName":"John","UserCoreSubject":["Java","MongoDB","MySQL","SQL Server"]}));実行結果は次の通りです。
{"UserId":101,"UserName":"John","UserCoreSubject":["Java","MongoDB","MySQL","SQL Server"]}2つの方法の使い分け
どちらの方法も同じオブジェクトを出力できますが、出力形式が異なります。
printjson(): 整形された読みやすい形式で出力されるため、デバッグ時や複雑なドキュメントの中身を確認したい場合に適しています。
print(JSON.stringify()): コンパクトな1行のJSON文字列として出力されるため、ログへの記録や他システムへのデータ受け渡しに向いています。
用途に応じてこれら2つのメソッドを使い分けることで、MongoDBスクリプトの開発やデバッグをより効率的に進められます。
-
MongoDBでオブジェクトの配列を検索する方法:$elemMatch演算子の使い方を解説
MongoDBでは、ドキュメント内にネストされたオブジェクトの配列(配列の中に複数のサブドキュメントが格納された構造)を持つコレクションを扱うことがよくあります。このような配列から特定の条件に一致する要素を検索するには、$elemMatch 演算子を使用します。$elemMatch を使うと、「同じ配列要素内で複数の条件をすべて満たす」ドキュメントを正確に絞り込むことができます。単純なドット記法での検索と異なり、複数のフィールド条件が同一の配列要素内で成立していることを保証できるのが大きな特徴です。サンプルデータの準備まずは、従業員情報を格納するコレクションを作成し、テスト用のドキュメントを挿
-
MongoDBでコンソールをクリアする2つの方法|ショートカット「Ctrl + L」とコマンド「cls」の使い方
MongoDBのシェル(mongo / mongosh)を使っていると、実行したクエリや結果がどんどん積み重なり、画面が見づらくなることがあります。そんなときに便利なのがコンソールのクリア機能です。MongoDBでは、以下の2つの方法でコンソールをクリアできます。 方法1:キーボードショートカット「Ctrl + L」を使う 最も手軽なのが、キーボードショートカットを使う方法です。次のキーを押すだけで、即座にコンソールをクリアできます。 Ctrl + L このキーを押すと、それまで表示されていたログや実行結果がすべて消え、まっさらな状態になります。Linuxのターミナルなどと同じ操作感なので、