MongoDB脚本的基础知识是什么?
我认为该脚本将以.js
结尾,我们使用mongo try.js
但如果我把
print(db.foo.find())
<{1>}中的并使用try.js
它会说
mongo try.js
如果我通过输入MongoDB shell version: 1.6.1
connecting to: test
DBQuery: test.foo -> undefined
并输入
mongo
> db.foo.find()
{ "_id" : ObjectId("4c7a73428261000000003a7e"), "a" : 1 }
> print(db.foo.find())
DBQuery: test.foo -> undefined
是我之前使用{a : 1}
执行MongoDB脚本的正确方法是什么,以及如何像Ruby db.foo.insert({a:1})
或Python irb
那样打印出来?谢谢。 (Ruby IDLE
或puts a.inspect
通常可以打印p a
的整个结构(a
中的所有变量名称和值))
a
和alert(db.foo.find())
也不起作用。
答案 0 :(得分:38)
外部脚本文件在shell上下文之外执行。
db.foo.find()
数据库命令只返回游标; 本身不打印任何东西。从shell发出命令时,shell将迭代游标并打印结果。从外部脚本文件运行命令时,不会打印任何内容。
print()
命令将打印出对象的字符串表示形式。在你的情况下,它是光标:
> print(db.foo.find())
DBQuery: test.foo -> undefined
如果需要打印查询结果,则必须在脚本文件中迭代光标并打印每个结果,类似于shell的作用:
function printResult (r) {
print(tojson(r))
}
db.foo.find().forEach(printResult)
答案 1 :(得分:15)
有一个用于打印json对象的内置函数。
只需将.forEach(printjson)
附加到函数调用的末尾。
db.foo.find().forEach(printjson);
答案 2 :(得分:1)
linux或mac shell:
user@comp:$ mongo < script.js