MongoDB で JSON を空白なしで印刷する

Mehvish Ashiq 2023年1月30日
  1. MongoDB で JSON を空白なしで印刷する
  2. MongoDB で find() メソッドを使用して空白なしで JSON を印刷する
  3. MongoDB で cursor オブジェクトを使用して空白なしで JSON を印刷する
MongoDB で JSON を空白なしで印刷する

この記事では、さまざまなコードスニペットを使用して、MongoDB で空白なしの JSON ドキュメントを印刷する方法について説明します。

MongoDB で JSON を空白なしで印刷する

サンプルコレクションを作成し、このチュートリアルの後半のコード例で使用する 3つのドキュメントを挿入して、理解を深めましょう。

サンプルコード:

> db.createCollection('printjson');
> db.printjson.insertMany([
    {"_id": "ab01", array: ['element1', 'element2'], results: [3,4]},
    {"_id": "cd02", array: ['element1', 'element2'], results: [7,3]},
    {"_id": "ef03", array: ['element1', 'element2'], results: [9,9]}
]);
> db.printjson.find().pretty();

出力:

{
        "_id" : "ab01",
        "array" : [
                "element1",
                "element2"
        ],
        "results" : [
                3,
                4
        ]
}
{
        "_id" : "cd02",
        "array" : [
                "element1",
                "element2"
        ],
        "results" : [
                7,
                3
        ]
}
{
        "_id" : "ef03",
        "array" : [
                "element1",
                "element2"
        ],
        "results" : [
                9,
                9
        ]
}

ご覧のとおり、上記の出力には、不要な空白がたくさん含まれています。以下に示すように、これらの結果の JSON ドキュメントを空白なしで印刷したいと考えています。

{ "_id" : "ab01", "array" : [ "element1", "element2" ], "results" : [ 3, 4 ] }
{ "_id" : "cd02", "array" : [ "element1", "element2" ], "results" : [ 7, 3 ] }
{ "_id" : "ef03", "array" : [ "element1", "element2" ], "results" : [ 9, 9 ] }

MongoDB で find() メソッドを使用して空白なしで JSON を印刷する

サンプルコード:

> db.printjson.find();

出力:

{ "_id" : "ab01", "array" : [ "element1", "element2" ], "results" : [ 3, 4 ] }
{ "_id" : "cd02", "array" : [ "element1", "element2" ], "results" : [ 7, 3 ] }
{ "_id" : "ef03", "array" : [ "element1", "element2" ], "results" : [ 9, 9 ] }

最も簡単なアプローチの 1つは、find().pretty() の代わりに find() メソッドのみを使用することです。

MongoDB で cursor オブジェクトを使用して空白なしで JSON を印刷する

コード例に進む前に、cursor オブジェクトを知っておく必要があります。find() メソッドを使用して特定のコレクションからドキュメントを取得するときは常に、cursor と呼ばれるポインターを返します。

find() メソッドによって返されるポインタは、cursor オブジェクトとして知られていると言えます。

サンプルコード:

> var cursor = db.printjson.find();
> while(cursor.hasNext()){
    printjsononeline(cursor.next());
}

出力:

{ "_id" : "ab01",  "array" : [ "element1", "element2" ],  "results" : [ 3, 4 ] }
{ "_id" : "cd02",  "array" : [ "element1", "element2" ],  "results" : [ 7, 3 ] }
{ "_id" : "ef03",  "array" : [ "element1", "element2" ],  "results" : [ 9, 9 ] }

このコードでは、find() メソッドによって返されたポインターを cursor という名前の変数に保存します。さらに、cursor 変数を繰り返し処理して、空白なしで JSON ドキュメントを印刷します。

ここで、cursor.hasNext() メソッドは、db.printjson.find() によって返されたカーソルがさらに反復してさらにドキュメントを返すことができる場合に true を返します。next() メソッドは、次のドキュメントへのアクセスを取得するために使用されています。

ポインタを変数に保存してからその変数を繰り返す代わりに、以下に示すより最適化されたクエリを使用できます。

サンプルコード:

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

出力:

{ "_id" : "ab01",  "array" : [ "element1", "element2" ],  "results" : [ 3, 4 ] }
{ "_id" : "cd02",  "array" : [ "element1", "element2" ],  "results" : [ 7, 3 ] }
{ "_id" : "ef03",  "array" : [ "element1", "element2" ],  "results" : [ 9, 9 ] }

次に、以下に示すように、cursor 変数を繰り返し処理し、toArray() メソッドを使用して結果のドキュメントを配列形式で印刷できます。

サンプルコード:

> var cursor = db.printjson.find();
> var documents = cursor.toArray();
> var i=0;
> while(i<documents.length){
      printjsononeline(cursor[i]);
      i++;
  }

出力:

{ "_id" : "ab01",  "array" : [ "element1", "element2" ],  "results" : [ 3, 4 ] }
{ "_id" : "cd02",  "array" : [ "element1", "element2" ],  "results" : [ 7, 3 ] }
{ "_id" : "ef03",  "array" : [ "element1", "element2" ],  "results" : [ 9, 9 ] }

または、次のようにすることもできます。

> var cursor = db.printjson.find();
> var i=0;
> while(i<cursor.count()){
      printjsononeline(cursor[i]);
      i++;
  }

出力:

{ "_id" : "ab01",  "array" : [ "element1", "element2" ],  "results" : [ 3, 4 ] }
{ "_id" : "cd02",  "array" : [ "element1", "element2" ],  "results" : [ 7, 3 ] }
{ "_id" : "ef03",  "array" : [ "element1", "element2" ],  "results" : [ 9, 9 ] }
著者: Mehvish Ashiq
Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

関連記事 - MongoDB Print