Javascript 是否可以在Mongo中执行接受任何参数的函数?

Javascript 是否可以在Mongo中执行接受任何参数的函数?,javascript,mongodb,Javascript,Mongodb,我希望编写一个函数,在Mongo中对集合执行自定义查询。问题是,我想重用这个函数。我的想法是(显然是人为的): 在Mongo控制台中执行该功能,然后继续运行: db.collection.find(awesome(5)); 但是,我得到了这个错误: error: { "$err" : "error on invocation of $where function: JS Error: ReferenceError: count is not defined nofile_b:1" }

我希望编写一个函数,在Mongo中对集合执行自定义查询。问题是,我想重用这个函数。我的想法是(显然是人为的):

在Mongo控制台中执行该功能,然后继续运行:

db.collection.find(awesome(5));
但是,我得到了这个错误:

error: {
    "$err" : "error on invocation of $where function:
JS Error: ReferenceError: count is not defined nofile_b:1"
}
所以,看起来Mongo并不尊重scope,但我真的不知道为什么。如有任何见解,将不胜感激

要深入了解我想做的事情:


文档集合具有lat/lng值,我希望查找凹多边形或凸多边形中的所有文档。我已经编写了该函数,但理想情况下可以重用该函数,因此我希望将构成多边形的点数组传递给我在Mongo端执行的函数。我已经看过Mongo的地理空间查询,它目前支持圆形和长方体查询-我需要更复杂的功能。

如果要在查询中使用该功能,需要将其保存到数据库中。做:

db.system.js.save({_id : "awesome", value : 
... function(count) { 
...     return this.size==count;
... }})
db.collection.find({"$where" : "awesome(5)"})
shell不是数据库本身,因此您不能在shell中定义某些内容并在数据库中使用它,正如您不能在Python中定义变量并期望数据库了解它一样

db.system.js.save({_id : "awesome", value : 
... function(count) { 
...     return this.size==count;
... }})
db.collection.find({"$where" : "awesome(5)"})