MongoDB: Error executing stored JavaScript function
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.
Example ... before :
> use adminswitched 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 }]