MongoDB脚本的基础知识 - 如何

nop*_*ole 23 mongodb nosql

MongoDB脚本的基础是什么?

我认为脚本将结束.js,我们使用它来运行它mongo try.js

但是,如果我把

print(db.foo.find())
Run Code Online (Sandbox Code Playgroud)

try.js和使用mongo try.js

它会说

MongoDB shell version: 1.6.1
connecting to: test
DBQuery: test.foo -> undefined
Run Code Online (Sandbox Code Playgroud)

如果我通过键入mongo和键入使用交互式shell

> db.foo.find()
{ "_id" : ObjectId("4c7a73428261000000003a7e"), "a" : 1 }
> print(db.foo.find())
DBQuery: test.foo -> undefined
Run Code Online (Sandbox Code Playgroud)

{a : 1}是我之前插入的东西db.foo.insert({a:1})

做MongoDB脚本的正确方法是什么,以及如何像Ruby irb或Python 一样打印出来IDLE?谢谢.(Ruby puts a.inspect或者p a都可以打印出a通常的整个结构(所有的变量名和值a))

alert(db.foo.find())并且console.log(db.foo.find())也不会工作.

Nie*_*est 39

外部脚本文件在shell上下文之外执行.

db.foo.find()数据库命令只返回一个光标; 它本身不打印任何东西.从shell发出命令时,shell将迭代游标并打印结果.从外部脚本文件运行命令时,不会打印任何内容.

print()命令将打印出对象的字符串表示形式.在你的情况下,它是光标:

> print(db.foo.find())
DBQuery: test.foo -> undefined
Run Code Online (Sandbox Code Playgroud)

如果需要打印查询结果,则必须在脚本文件中迭代光标并打印每个结果,类似于shell的作用:

function printResult (r) {
  print(tojson(r))
}

db.foo.find().forEach(printResult)
Run Code Online (Sandbox Code Playgroud)


dtb*_*rne 15

有一个用于打印json对象的内置函数.

只需附加.forEach(printjson)到函数调用的末尾.

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