MongoDB で JSON を空白なしで印刷する
- MongoDB で JSON を空白なしで印刷する
-
MongoDB で
find()
メソッドを使用して空白なしで JSON を印刷する -
MongoDB で
cursor
オブジェクトを使用して空白なしで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 ] }