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

MongoDBでカーソルを反復処理してドキュメントを出力するには?(printjsonの使い方)

MongoDBでカーソルを反復処理してドキュメントを出力する方法

MongoDBでは、find()メソッドが返すカーソルを反復処理しながら、各ドキュメントを整形して出力することができます。その際に便利なのがprintjson関数です。この記事では、サンプルコレクションを作成し、printjsonを使ってドキュメントを読みやすく表示する手順を具体的なコード例とともに解説します。

1. サンプルコレクションの作成

まずはinsertOne()メソッドを使用して、ドキュメントを格納したコレクションを作成しましょう。

> db.cursorDemo.insertOne({"StudentFullName":"John Smith","StudentAge":23});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc7f0d08f9e6ff3eb0ce442")
}
> db.cursorDemo.insertOne({"StudentFullName":"John Doe","StudentAge":21});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc7f0df8f9e6ff3eb0ce443")
}
> db.cursorDemo.insertOne({"StudentFullName":"Carol Taylor","StudentAge":20});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc7f0eb8f9e6ff3eb0ce444")
}
> db.cursorDemo.insertOne({"StudentFullName":"Chris Brown","StudentAge":24});
{
   "acknowledged" : true,
   "insertedId" : ObjectId("5cc7f0f88f9e6ff3eb0ce445")
}

2. find()メソッドですべてのドキュメントを表示する

続いて、find()メソッドとpretty()を組み合わせて、コレクション内のすべてのドキュメントを表示します。

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

上記のクエリを実行すると、以下のような結果が出力されます。

{
   "_id" : ObjectId("5cc7f0d08f9e6ff3eb0ce442"),
   "StudentFullName" : "John Smith",
   "StudentAge" : 23
}
{
   "_id" : ObjectId("5cc7f0df8f9e6ff3eb0ce443"),
   "StudentFullName" : "John Doe",
   "StudentAge" : 21
}
{
   "_id" : ObjectId("5cc7f0eb8f9e6ff3eb0ce444"),
   "StudentFullName" : "Carol Taylor",
   "StudentAge" : 20
}
{
   "_id" : ObjectId("5cc7f0f88f9e6ff3eb0ce445"),
   "StudentFullName" : "Chris Brown",
   "StudentAge" : 24
}

3. forEach(printjson)でカーソルを反復処理して出力する

次に、forEach(printjson)を使ってカーソルを反復処理し、各ドキュメントをJSON形式で整形して出力してみましょう。

> db.cursorDemo.find().forEach(printjson);

実行すると、先ほどと同様にすべてのドキュメントが整形されて表示されます。

{
   "_id" : ObjectId("5cc7f0d08f9e6ff3eb0ce442"),
   "StudentFullName" : "John Smith",
   "StudentAge" : 23
}
{
   "_id" : ObjectId("5cc7f0df8f9e6ff3eb0ce443"),
   "StudentFullName" : "John Doe",
   "StudentAge" : 21
}
{
   "_id" : ObjectId("5cc7f0eb8f9e6ff3eb0ce444"),
   "StudentFullName" : "Carol Taylor",
   "StudentAge" : 20
}
{
   "_id" : ObjectId("5cc7f0f88f9e6ff3eb0ce445"),
   "StudentFullName" : "Chris Brown",
   "StudentAge" : 24
}

4. 特定のフィールドだけを出力する方法

「StudentFullName」や「StudentAge」のように、特定のフィールドのみを取得したい場合は、find()の第2引数にプロジェクション(射影)を指定します。_id: 0 を指定すると、デフォルトで表示される_idフィールドを非表示にできます。

> db.cursorDemo.find({}, { "StudentFullName": 1,"StudentAge":1, "_id": 0 }).forEach(printjson)

実行すると、指定したフィールドのみが出力されます。

{ "StudentFullName" : "John Smith", "StudentAge" : 23 }
{ "StudentFullName" : "John Doe", "StudentAge" : 21 }
{ "StudentFullName" : "Carol Taylor", "StudentAge" : 20 }
{ "StudentFullName" : "Chris Brown", "StudentAge" : 24 }

まとめ

MongoDBでカーソルの内容を確認したいときは、forEach(printjson)を使うことで各ドキュメントをきれいに整形して出力できます。また、プロジェクションを組み合わせれば必要なフィールドだけを効率的に取り出せるため、デバッグやデータ確認の作業効率が大きく向上します。ぜひ実際の開発でも活用してみてください。

  1. PythonでMongoDBを操作する方法|pymongoを使った基本操作入門

    MongoDBは広く利用されているドキュメント指向データベースであり、NoSQLデータベースの一種です。Pythonはpymongoなどのモジュールを介してMongoDBと連携し、データの作成や操作を行うことができます。本記事では、その具体的な方法を解説します。なお、PythonからMongoDBへ接続するには、システムにMongoDBがあらかじめインストールされている必要があります。MongoDBのセットアップ手順については、専用のチュートリアル記事をご参照ください。 pymongoのインストール MongoDBとやり取りするには、pymongoというモジュールが必要です。以下のコマンドを

  2. MongoDBの集約(Aggregation)と投影(Projection)の使い方を解説

    MongoDBの集約と投影とはMongoDBで特定のフィールドだけを抽出しながらデータを加工したい場合、aggregate()メソッドと$projectステージを組み合わせるのが効果的です。$projectは、パイプライン内で指定されたフィールドを持つドキュメントだけを次のステージへ渡す役割を果たします。この記事では、実際にコレクションを作成し、$match・$unwind・$sort・$group・$projectを組み合わせた集約パイプラインの具体的な使い方を解説します。サンプルコレクションの作成まず、insertOne()を使ってドキュメントを含むコレクションを作成します。> db