我有一个MongoDB查询,它在所有属性中搜索搜索变量中定义的值.它的工作方式如下:
db.collection.findOne({ $where: function() { var search = 'searchstring'; for (var key in this) { if (this[key] === search) { return true; } return false; } } });
但是,我想在查询之外定义搜索变量.
但是当我这样做时,我得到一个错误,它没有被引用(即范围问题):
"ReferenceError: search is not defined near '[key] === search
如何使用或将变量传递给查询过滤器?
你可以尝试这样的事情:
var searchstring = 'whatever'; var params = {}; params.$where = 'function() {' + 'var search = "' + searchstring + '";' + 'for (var key in this) {' + 'if (this[key] === search) {' + 'return true;' + '}' + 'return false;' + '}' + '}'; db.collection.findOne(params);
(使用外部变量对函数进行字符串化和连接)
通过猫鼬为我工作