MongoDB - eval Vs. db.eval

时间:2014-09-07 19:27:58

标签: javascript node.js mongodb eval

我在system.js集合中有一个名为getAllNotes的简单存储脚本。

脚本代码:function (x) { return db.notes.find(); }

notes是一个包含我想要提取的数据的集合。

eval('getAllNotes()') - 运行良好并返回数据。

db.eval('getAllNotes()') - 返回一个JSON字符串,其中包含无关的各种配置 与我的收藏见下文。任何的想法?任何人都理解执行eval和db.eval之间的区别吗?

 "_mongo" : {
               "slaveOk" : false,
               "host" : "EMBEDDED"
       },
       "_db" : {
               "_mongo" : {
                       "slaveOk" : false,
                       "host" : "EMBEDDED"
               },
               "_name" : "test"
       },
       "_collection" : {
               "_mongo" : {
                       "slaveOk" : false,
                       "host" : "EMBEDDED"
               },
               "_db" : {
                       "_mongo" : {
                               "slaveOk" : false,
                               "host" : "EMBEDDED"
                       },
                       "_name" : "test"
               },
               "_shortName" : "notes",
               "_fullName" : "test.notes"
       },
       "_ns" : "test.notes",
       "_query" : {

       },
       "_fields" : null,
       "_limit" : 0,
       "_skip" : 0,
       "_batchSize" : 0,
       "_options" : 0,
       "_cursor" : null,
       "_numReturned" : 0,
       "_special" : false

1 个答案:

答案 0 :(得分:0)

eval获取它执行的一串代码。

根据{{​​3}},

db.eval需要调用函数和传递给该函数的参数列表。换句话说,请在此处留下单引号'

db.eval(getAllNotes())

至于两者之间的差异,文档也说明了它:

  

mongo shell中的帮助器db.eval()包装eval命令。因此,helper方法共享底层命令的特征和行为,但有一个例外:db.eval()方法不支持nolock选项。

文档。在要求其他人为你做的事情之前,要学习的重要内容。