MongoDB脚本的基础知识 - 如何

时间:2010-08-29 15:08:57

标签: mongodb nosql

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 并输入

来使用交互式shell
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 IDLEputs a.inspect通常可以打印p a的整个结构(a中的所有变量名称和值))

aalert(db.foo.find())也不起作用。

3 个答案:

答案 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