我在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
答案 0 :(得分:0)
eval
获取它执行的一串代码。
db.eval
需要调用函数和传递给该函数的参数列表。换句话说,请在此处留下单引号'
:
db.eval(getAllNotes())
至于两者之间的差异,文档也说明了它:
mongo shell中的帮助器
db.eval()
包装eval
命令。因此,helper方法共享底层命令的特征和行为,但有一个例外:db.eval()
方法不支持nolock
选项。
文档。在要求其他人为你做的事情之前,要学习的重要内容。