Mongodb函数类型错误

Mongodb函数类型错误,mongodb,shell,Mongodb,Shell,在mongo shell中,运行以下行可以正常工作: director = = 'George Lucas' db.movie.find( { director: director} ).sort( { title: 1 }) 我在mongo shell中创建了以下函数作为测试: function bydirector(db, director) { db.movie.findOne( { director: director} ).sort( { title: 1 }); } 使用“

在mongo shell中,运行以下行可以正常工作:

director =  = 'George Lucas'
db.movie.find( { director: director} ).sort( { title: 1 })
我在mongo shell中创建了以下函数作为测试:

function bydirector(db, director) {
  db.movie.findOne( { director: director} ).sort( { title: 1 });
}
使用“bydirector(director)”运行函数会返回以下错误:

2015-11-22T19:24:26.713-0500 E查询[thread1]类型错误:db.movie未定义: 贝署长(shell):1:39 @(外壳):1:1

知道它为什么失败了吗?我正在用搜索键传递名为director的变量。

两个问题:

首先,使用函数参数中的
director
重新分配全局值
db
。确保您使用

bydirector(db, director)

另外,您的两个查询也不相同。不能对作为对象的
findOne
查询的结果调用
sort
。但是,只有在您解决第一个问题后,它才会出现问题。

根据上述描述,作为执行上述代码段时发生错误的替代解决方案,请注意,函数bydirector接受两个参数

(a) Mongo数据库对象

(b) 根据mongodb集合中需要过滤的文档过滤值

请尝试执行以下代码段

在下面提到的代码片段中,请注意将查询执行结果返回给调用函数的return语句

var director='George Lucas';
function bydirector(db, director) {
 result=db.movie.findOne( { director: director} ).sort( { title: 1 });
 return result;
}
result=bydirector(db,director)

感谢您的关注,我已经将findOne的函数改为find;错误已经消失了,但是我没有收到你推荐的电话的任何结果。在主题中,是否有方法在函数中回显展开的行?如果要打印结果集,则需要从函数中返回结果集<代码>返回db.movie.find(…)