MongoDB 打印不带空格的 JSON

Mehvish Ashiq 2023年1月30日
  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
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