在 mongodb shell 中打印文档值

问题描述 投票:0回答:4

我想在 mongo shell 中打印此 JSON 文档的值。就像简单的控制台输出一样,无需创建新的集合或文档。

enter image description here

提前致谢

mongodb mongodb-query
4个回答
32
投票

我找到了一个解决方案,通过使用

.forEach()
应用 JavaScript 方法:

db.widget.find(
    { id : "4" }, 
    {quality_level: 1, _id:0}
).forEach(function(x) { 
    print(x.quality_level); 
});

8
投票

db.collection.find()
返回一个 光标

游标对象有很多方法,可用于获取游标信息、迭代、获取和处理查询结果中的各个文档(在 Mongo Shell 中)。例如,

let result = db.widget.find( { id : "4" }, { quality_level: 1, _id: 0 } );

方法

print
printjson
tojson
对于在 Mongo Shell 中打印分配给游标并对其进行迭代的查询结果非常有用。

在这个特定的示例中,以下每个语句都将打印预期的输出:

    result.forEach( doc =>  print( doc.quality_level ) );
    result.forEach( doc =>  print( tojson(doc)) );
    result.forEach( printjson );

请注意,每次要迭代游标时都必须运行查询,因为游标在迭代后会关闭。但是,可以使用

cursor.toArray()
方法获取 JavaScript 数组,并迭代该数组并处理查询结果文档,而无需再次运行查询。

注意事项:


2024 年 4 月 10 日更新:

新的 mongosh(MongoDB Shell)具有与 mongo shell 类似的方法来打印文档值。可以使用方法

print
(及其别名
printjson
)。
tojson
shell 的方法
mongo
在新 shell 中不存在。

例如:

let result = db.widget.find( { id : "4" } );
result.forEach( doc =>  print( doc.quality_level ) );
result.forEach( doc =>  printjson( doc)) );

1
投票

返回光标时打印每个文档:

db.widget.find().forEach(printjson);

-1
投票
db.widget.findOne({"id":4},{quality_level:1,_id:0}).quality_level

投影并不是必需的,但它减少了分片集合中要传输的数据。

© www.soinside.com 2019 - 2024. All rights reserved.