How can I print document in cursor.ForEach?

13,669

I am not sure why the pretty can't be applied to your case.

If you are consuming the cursor manually, you need to use the printjson function

db.collection.find().forEach(printjson)

or the following with filter expression

db.collection.find({}, { "scores": 1, "_id": 0 }).forEach(printjson)
Share:
13,669
Arkadiusz Kałkus
Author by

Arkadiusz Kałkus

I’m a full-stack developer specialized in the design, and implementation of corporate web applications. I put emphasis on S.O.L.I.D. craftsmanship and strive to keep my code clean. Because I know how expensive technical debt can be. Because I understand my job is not to write code but to solve problems. Because I want to help people to be more effective through the software.

Updated on July 25, 2022

Comments

  • Arkadiusz Kałkus
    Arkadiusz Kałkus almost 2 years

    I've defined some simple cursor as find() on some collection.

    cursor = db.students.find()
    

    Student has following schema:

    "_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
            }
    ]
    

    I want to iterate cursor and print a document. I try like that:

    cursor.forEach(function(o){print(o)})
    

    It prints only this:

    [object Object]

    If I modify a loop to select some simple property it works:

    cursor.forEach(function(o){print(o._id)})
    

    Though if I change it to print scores it prints this:

    [object Object],[object Object],[object Object],[object Object]
    

    Is there any function to print a json document in mongodb shell?