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