MongoDB 列印不帶空格的 JSON
Mehvish Ashiq
2023年1月30日
本文介紹瞭如何藉助不同的程式碼片段在 MongoDB 中列印沒有空格的 JSON 文件。
MongoDB 列印不帶空格的 JSON
讓我們建立一個示例集合並插入三個文件以在本教程後面的程式碼示例中使用以更好地理解它。
示例程式碼:
> 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 ] }
最簡單的方法之一是僅使用 find()
方法而不是 find().pretty()
。
使用 cursor
物件在 MongoDB 中列印沒有空格的 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 文件。
在這裡,如果 db.printjson.find()
返回的遊標可以進一步迭代以返回更多文件,則 cursor.hasNext()
方法返回 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