What are the basics of MongoDB Scripts?
I think the script will end with .js
, and we run it using mongo try.js
But if I put
print(db.foo.find())
in try.js
and use mongo try.js
it will say
MongoDB shell version: 1.6.1
connecting to: test
DBQuery: test.foo -> undefined
and if I use the interactive shell by typing mongo
and type
> db.foo.find()
{ "_id" : ObjectId("4c7a73428261000000003a7e"), "a" : 1 }
> print(db.foo.find())
DBQuery: test.foo -> undefined
the {a : 1}
was something I inserted earlier using db.foo.insert({a:1})
what are the proper ways of doing MongoDB Scripts and how to print things out like a Ruby irb
or Python's IDLE
? thanks. (Ruby's puts a.inspect
or p a
can both print out the whole structure of a
usually (all the variable names and values in a
))
alert(db.foo.find())
and console.log(db.foo.find())
won't work either.
The external script files are executed outside of the shell context.
The db.foo.find()
database command only returns a cursor; it doesn't print anything by itself. When the command is issued from the shell, the shell will iterate the cursor and print the results. When the command is run from an external script file, nothing is printed.
The print()
command will print out the string representation of the object. In your case, it's the cursor:
> print(db.foo.find())
DBQuery: test.foo -> undefined
If you need to print results of the query, you'll have to iterate the cursor in your script file and print each result, similarly to what the shell does:
function printResult (r) {
print(tojson(r))
}
db.foo.find().forEach(printResult)
There's a built-in function for printing a json object.
Just append .forEach(printjson)
to the end of the function call.
db.foo.find().forEach(printjson);
linux or mac shell:
user@comp:$ mongo < script.js