在mongodb shell中打印文档值

在mongodb shell中打印文档值,mongodb,mongodb-query,Mongodb,Mongodb Query,我想在mongo shell中打印这个JSON文档的值。与简单的控制台输出类似,无需创建新的集合或文档 提前感谢我通过使用.forEach()应用JavaScript方法找到了一个解决方案: db.widget.find( { id : "4" }, {quality_level: 1, _id:0} ).forEach(function(x) { print(x.quality_level); }); 投影对该操作来说不是必需的,但它减少了碎片收集时要传输的数

我想在mongo shell中打印这个JSON文档的值。与简单的控制台输出类似,无需创建新的集合或文档


提前感谢

我通过使用
.forEach()
应用JavaScript方法找到了一个解决方案:

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

投影对该操作来说不是必需的,但它减少了碎片收集时要传输的数据。

要在返回光标时打印每个文档,请执行以下操作:

db.widget.find().forEach(printjson);
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数组,并迭代该数组并处理查询结果文档,而无需再次运行查询

注:

  • db.collection.findOne()
    方法返回一个文档(不是光标)

我真的不明白你在问什么。您可以在MongoShell中运行该查询,而无需对其进行任何更改。您希望在mongodbShell上使用console.log()或打印类似console.log输出的mongodb结果吗?您使用的是RoboMongo,当前处于“树模式”切换到“文本模式”以查看控制台输出。在MongoShell中:
db.collection.findOne()
以格式良好的JSON打印返回的文档。要以格式化方式打印
find()
的结果(一个或多个文档),请使用
db.collection.find().pretty()
。这些方法打印文档的所有字段。若要限制字段,请将“投影”与“查找”方法一起使用。打印不适用于我,请尝试打印(“Richard”),但不适用work@RichardAguirre
print('Richard')
mongo
shell中的有效语句。
print(123)
print([12,34,99,1000]
)也是如此。要打印JSON,您可以使用
printjson({a:65})
    result.forEach( doc =>  print( doc.quality_level ) );
    result.forEach( doc =>  print( tojson(doc)) );
    result.forEach( printjson );