在MongoDB shell中打印文档值

10

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

enter image description here

先感谢您。


我不太明白你在问什么。你可以在Mongo shell中运行该查询,无需对其进行任何更改。 - Trudbert
你想在mongodbShell上使用console.log(),还是想打印类似console.log输出的mongodb结果? - throrin19
您正在使用RoboMongo,目前处于“树形模式”,切换到“文本模式”以查看控制台输出。 - vmr
4个回答

32

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

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

7

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

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

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

在Mongo Shell中,printprintjsontojson方法对于打印分配给游标并遍历的查询结果非常有用。

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

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

请注意,每次迭代光标时都必须运行查询,因为在迭代完毕后光标会关闭。但是,可以使用cursor.toArray()方法获取一个JavaScript数组,并迭代该数组并处理查询结果文档,而无需再次运行查询。 注:

mongo shell 中:db.collection.findOne() 以格式化的 JSON 打印返回的文档。要以格式化的方式打印 find() 的结果(一个或多个文档),请使用 db.collection.find().pretty()。这些方法打印文档的所有字段。要使用 projection 限制字段,请在查找方法中使用它。 - prasad_
打印功能对我不起作用,尝试打印('Richard'),也没有用。 - Richard Aguirre
@RichardAguirre 在 mongo shell 中,print('Richard') 是一个 有效的 语句。print(123)print([12, 34, 99, 1000]) 也是如此。要打印 JSON,您可以使用 printjson({ a: 65 }) - prasad_

1
在返回光标时打印每个文档:
db.widget.find().forEach(printjson);

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

这个操作并不需要投影,但是在分片集合的情况下,它可以减少要传输的数据量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接