MongoDB 列印不帶空格的 JSON

Mehvish Ashiq 2023年1月30日 2022年6月13日
  1. MongoDB 列印不帶空格的 JSON
  2. 在 MongoDB 中使用 find() 方法列印沒有空格的 JSON
  3. 使用 cursor 物件在 MongoDB 中列印沒有空格的 JSON
MongoDB 列印不帶空格的 JSON

本文介紹瞭如何藉助不同的程式碼片段在 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 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