本文介绍了MongoDB:执行存储的JavaScript函数时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在存储的JavaScript函数下面运行时,出现错误:
When I run below stored JavaScript function I get errors:
> db.system.js.save({_id:"last_n_users", value: function(n){return db.users.find().sort({created_at:-1}).limit(n)}})
> db.eval("last_n_users(10)")
以下是错误:
{ "value" : "DBQuery: store.users -> undefined" }
为什么?请帮帮我吗?
推荐答案
find()函数返回一个游标,该游标无法从JavaScript返回.建议的解决方法是使用toArray()获取数组返回值.
The find() function returns a cursor, which can't be returned from JavaScript.The suggested workaround is to use toArray() to get an array return value.
示例...之前:
> use admin
switched to db admin
> db.system.js.save( { _id : "foo", value: function(n){return db.system.indexes.find().limit(n)} } )
> db.eval( "foo(3)" )
{ "value" : "DBQuery: admin.system.indexes -> undefined" }
正如您所描述的.
之后:
just as you describe.
And after:
> db.system.js.save( { _id : "foo", value: function(n){return db.system.indexes.find().limit(n).toArray()} } )
> db.eval( "foo(3)" )
[
{
"name" : "_id_",
"ns" : "admin.system.users",
"key" : {
"_id" : 1
}
},
{
"name" : "user_1",
"ns" : "admin.system.users",
"key" : {
"user" : 1
},
"unique" : false
},
{
"name" : "_id_",
"ns" : "admin.whee",
"key" : {
"_id" : 1
},
"v" : 0
}
]
这篇关于MongoDB:执行存储的JavaScript函数时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!