如何在cursor.ForEach中打印文档?

Lan*_*eyo 5 mongodb mongo-shell mongodb-query

我在一些集合上将一些简单的游标定义为find().

cursor = db.students.find()
Run Code Online (Sandbox Code Playgroud)

学生有以下架构:

"_id" : 19,
"name" : "Gisela Levin",
"scores" : [
        {
                "type" : "exam",
                "score" : 44.51211101958831
        },
        {
                "type" : "quiz",
                "score" : 0.6578497966368002
        },
        {
                "type" : "homework",
                "score" : 93.36341655949683
        },
        {
                "type" : "homework",
                "score" : 49.43132782777443
        }
]
Run Code Online (Sandbox Code Playgroud)

我想迭代光标并打印文档.我试着这样:

cursor.forEach(function(o){print(o)})
Run Code Online (Sandbox Code Playgroud)

它只打印:

[对象]

如果我修改一个循环来选择一些简单的属性,它可以工作:

cursor.forEach(function(o){print(o._id)})
Run Code Online (Sandbox Code Playgroud)

虽然如果我把它更改为打印分数,它会打印出来:

[object Object],[object Object],[object Object],[object Object]
Run Code Online (Sandbox Code Playgroud)

是否有任何函数在mongodb shell中打印json文档?

sty*_*ane 10

我不确定为什么pretty不适用于你的情况.

如果手动使用光标,则需要使用该printjson功能

db.collection.find().forEach(printjson)
Run Code Online (Sandbox Code Playgroud)

或以下带过滤器表达式

db.collection.find({}, { "scores": 1, "_id": 0 }).forEach(printjson)
Run Code Online (Sandbox Code Playgroud)

  • 虽然这篇文章有点旧:您还可以使用以下符号`db.collection.find().forEach(function(record){printjson(record.field)})` (2认同)