繁体   English   中英

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

[英]Is it possible to execute a function in Mongo that accepts any parameters?

我正在寻找编写一个函数来对Mongo中的集合进行自定义查询。 问题是,我想重用该功能。 我的想法是这样的(显然是人为的):

var awesome = function(count) {
  return function() {
    return this.size == parseInt(count);
  };
}

在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端执行的函数。 我看过Mongo的地理空间查询,目前它支持圆框查询和框查询-我需要更复杂的东西。

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

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

外壳不是数据库本身,因此您不能在外壳中定义某些东西并在数据库中使用它,而不仅仅是在Python中定义变量并希望数据库知道它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM